How to insert delay - Please help.

KelvinHand

Well-Known Member
#12
Kelvin,

Can you give me your email address please?

GG
PHP:
Buy = Cross( MACD(), Signal() );
Sell = Cross( Signal(), MACD() );
Short = Sell;
Cover = Buy;

barcomplete = BarIndex() < LastValue(BarIndex());


//Reset Timer
GetPerformanceCounter( True );



for(i=0; i<5; i++)
ThreadSleep(100);

elapsed =GetPerformanceCounter();
_TRACE("elapsed1 = " + elapsed+" ms");


GetPerformanceCounter( True );
AlertIf( barcomplete AND Short, "EXEC Calc.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
_TRACE("elapsed2 = " + elapsed+" ms");


GetPerformanceCounter( True );

AlertIf( barcomplete AND Cover, "EXEC Notepad.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
_TRACE("elapsed3 = " + elapsed+" ms");
 

GuluGulu

Well-Known Member
#13
Kelvin,

Below is the famous Supertrend code where I would like to implement this code. As per your last example, I have implemented it. Still Calc.exe pops up immediately upon bar-complete with no delay. Try this with Amibroker Bar-Replay function and you will see.

Please check when you have time.

Code:
_SECTION_BEGIN("Super Trend");
SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
GfxSetBkMode(0);
GfxSetOverlayMode(1);
SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);

SetTradeDelays(1,1,1,1);

_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

Factor =  Optimize("Factor",Param("Factor",1,0.25,5,0.25),0.25,5,0.25);
Pd= Optimize("ATR Periods",Param("ATR Periods",3,3,20,1),3,20,1);

Up=(H+L)/2+(Factor*ATR(Pd));
Dn=(H+L)/2-(Factor*ATR(Pd));
iATR=ATR(Pd);
TrendUp=TrendDown=Null;
trend[0]=1;
changeOfTrend=0;
flag=flagh=0;

for (i = 1; i <BarCount-1; i++) {
TrendUp[i] = Null;
TrendDown[i] = Null;

trend[i]=1;


if (Close[i]>Up[i-1]) {
trend[i]=1;
if (trend[i-1] == -1) changeOfTrend = 1;

}
else if (Close[i]<Dn[i-1]) {
trend[i]=-1;
if (trend[i-1] == 1) changeOfTrend = 1;
}
else if (trend[i-1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i-1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}

if (trend[i]<0 && trend[i-1]>0) {
flag=1;
}
else {
flag=0;
}

if (trend[i]>0 && trend[i-1]<0) {
flagh=1;
}
else {
flagh=0;
}

if (trend[i]>0 && Dn[i]<Dn[i-1]){
Dn[i]=Dn[i-1];
}

if (trend[i]<0 && Up[i]>Up[i-1])
{ Up[i]=Up[i-1];
}

if (flag==1)
{ Up[i]=(H[i]+L[i])/2+(Factor*iATR[i]);;
}
if (flagh==1)
{ Dn[i]=(H[i]+L[i])/2-(Factor*iATR[i]);;
}
if (trend[i]==1) {
TrendUp[i]=Dn[i];
if (changeOfTrend == 1) {
TrendUp[i-1] = TrendDown[i-1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=Up[i];
if (changeOfTrend == 1) {
TrendDown[i-1] = TrendUp[i-1];
changeOfTrend = 0;
}
}
}

Plot(TrendUp,"Trend",colorGreen);
Plot(TrendDown,"Down",colorRed);

Buy = trend==1;
Sell=trend==-1;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;

BuyPrice=ValueWhen(Buy,C);
SellPrice=ValueWhen(Sell,C);
ShortPrice=ValueWhen(Short,C);
CoverPrice=ValueWhen(Cover,C);
Long=Flip(Buy,Sell);
Shrt=Flip(Sell,Buy );
Title = EncodeColor(colorBlue) + Date() +" - "+EncodeColor(colorBrown)+ "Vol= "+ WriteVal(V)+"\n" +EncodeColor(colorBlack) +"O-"+O+"  "+EncodeColor(colorLime)+"H-"+H+"  "+EncodeColor(colorRed)+"L-"+L+"  "+EncodeColor(colorBlack)+
"C-"+C+"  "+ "\n"+ 
EncodeColor(colorLime)+
WriteIf (Buy , "Long @ Close @ "+C+"  ","")+EncodeColor(colorRed)+
WriteIf (Sell , "Short @ Close @ "+C+"  ","")+EncodeColor(colorBlue)+
WriteIf(Sell , "Last Profit is"+(C-BuyPrice)+"","")+
WriteIf(Buy  , "Last Profit is"+(SellPrice-C)+"","")+EncodeColor(colorLime)+
WriteIf(Long AND NOT Buy, "Long @"+(BuyPrice),"") +EncodeColor(colorRed)+
WriteIf(shrt AND NOT Sell, "Short @"+(SellPrice),"") +EncodeColor(colorBlue)+
WriteIf(Long AND NOT Buy, " - Profit is "+(C-BuyPrice)+"","")+
WriteIf(shrt AND NOT Sell, " - Profit is "+(SellPrice-C)+"","");
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

barcomplete = BarIndex() < LastValue(BarIndex());

//Reset Timer 
GetPerformanceCounter( True ); 

for(i=0; i<5; i++) ThreadSleep(100); 

elapsed =GetPerformanceCounter(); 
_TRACE("elapsed1 = " + elapsed+" ms"); 


GetPerformanceCounter( True ); 
AlertIf( barcomplete AND Buy, "EXEC Calc.exe", "Buy Share", 3);
elapsed =GetPerformanceCounter(); 
_TRACE("elapsed2 = " + elapsed+" ms"); 


GetPerformanceCounter( True ); 
AlertIf( barcomplete AND Sell, "EXEC Calc.exe", "Sell Share", 3);
elapsed =GetPerformanceCounter(); 
_TRACE("elapsed3 = " + elapsed+" ms"); 



//Magfied Market Price
FS=Param("Font Size",30,11,100,1);
GfxSelectFont("Times New Roman", FS, 700, True );
GfxSetBkMode( colorWhite );
GfxSetTextColor( ParamColor("Color",colorGreen) );
Hor=Param("Horizontal Position",940,1,1200,1);
Ver=Param("Vertical Position",12,1,830,1);
GfxTextOut(""+C, Hor , Ver );
YC=TimeFrameGetPrice("C",inDaily,-1);
DD=Prec(C-YC,2);
xx=Prec((DD/YC)*100,2);
GfxSelectFont("Times New Roman", 11, 700, True );
GfxSetBkMode( colorBlack );
GfxSetTextColor(ParamColor("Color",colorYellow) );
//GfxTextOut(""+DD+" ("+xx+"%)", Hor , Ver+45 );

_SECTION_END();
May God Bless all of us,
Warm Regards,
GG
 

KelvinHand

Well-Known Member
#14
Kelvin,

Below is the famous Supertrend code where I would like to implement this code. As per your last example, I have implemented it. Still Calc.exe pops up immediately upon bar-complete with no delay. Try this with Amibroker Bar-Replay function and you will see.

Please check when you have time.

Code:
_SECTION_BEGIN("Super Trend");
SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
GfxSetBkMode(0);
GfxSetOverlayMode(1);
SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);

SetTradeDelays(1,1,1,1);

_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

Factor =  Optimize("Factor",Param("Factor",1,0.25,5,0.25),0.25,5,0.25);
Pd= Optimize("ATR Periods",Param("ATR Periods",3,3,20,1),3,20,1);

Up=(H+L)/2+(Factor*ATR(Pd));
Dn=(H+L)/2-(Factor*ATR(Pd));
iATR=ATR(Pd);
TrendUp=TrendDown=Null;
trend[0]=1;
changeOfTrend=0;
flag=flagh=0;

for (i = 1; i <BarCount-1; i++) {
TrendUp[i] = Null;
TrendDown[i] = Null;

trend[i]=1;


if (Close[i]>Up[i-1]) {
trend[i]=1;
if (trend[i-1] == -1) changeOfTrend = 1;

}
else if (Close[i]<Dn[i-1]) {
trend[i]=-1;
if (trend[i-1] == 1) changeOfTrend = 1;
}
else if (trend[i-1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i-1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}

if (trend[i]<0 && trend[i-1]>0) {
flag=1;
}
else {
flag=0;
}

if (trend[i]>0 && trend[i-1]<0) {
flagh=1;
}
else {
flagh=0;
}

if (trend[i]>0 && Dn[i]<Dn[i-1]){
Dn[i]=Dn[i-1];
}

if (trend[i]<0 && Up[i]>Up[i-1])
{ Up[i]=Up[i-1];
}

if (flag==1)
{ Up[i]=(H[i]+L[i])/2+(Factor*iATR[i]);;
}
if (flagh==1)
{ Dn[i]=(H[i]+L[i])/2-(Factor*iATR[i]);;
}
if (trend[i]==1) {
TrendUp[i]=Dn[i];
if (changeOfTrend == 1) {
TrendUp[i-1] = TrendDown[i-1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=Up[i];
if (changeOfTrend == 1) {
TrendDown[i-1] = TrendUp[i-1];
changeOfTrend = 0;
}
}
}

Plot(TrendUp,"Trend",colorGreen);
Plot(TrendDown,"Down",colorRed);

Buy = trend==1;
Sell=trend==-1;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;

BuyPrice=ValueWhen(Buy,C);
SellPrice=ValueWhen(Sell,C);
ShortPrice=ValueWhen(Short,C);
CoverPrice=ValueWhen(Cover,C);
Long=Flip(Buy,Sell);
Shrt=Flip(Sell,Buy );
Title = EncodeColor(colorBlue) + Date() +" - "+EncodeColor(colorBrown)+ "Vol= "+ WriteVal(V)+"\n" +EncodeColor(colorBlack) +"O-"+O+"  "+EncodeColor(colorLime)+"H-"+H+"  "+EncodeColor(colorRed)+"L-"+L+"  "+EncodeColor(colorBlack)+
"C-"+C+"  "+ "\n"+ 
EncodeColor(colorLime)+
WriteIf (Buy , "Long @ Close @ "+C+"  ","")+EncodeColor(colorRed)+
WriteIf (Sell , "Short @ Close @ "+C+"  ","")+EncodeColor(colorBlue)+
WriteIf(Sell , "Last Profit is"+(C-BuyPrice)+"","")+
WriteIf(Buy  , "Last Profit is"+(SellPrice-C)+"","")+EncodeColor(colorLime)+
WriteIf(Long AND NOT Buy, "Long @"+(BuyPrice),"") +EncodeColor(colorRed)+
WriteIf(shrt AND NOT Sell, "Short @"+(SellPrice),"") +EncodeColor(colorBlue)+
WriteIf(Long AND NOT Buy, " - Profit is "+(C-BuyPrice)+"","")+
WriteIf(shrt AND NOT Sell, " - Profit is "+(SellPrice-C)+"","");
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

barcomplete = BarIndex() < LastValue(BarIndex());

//Reset Timer 
GetPerformanceCounter( True ); 

for(i=0; i<5; i++) ThreadSleep(100); 

elapsed =GetPerformanceCounter(); 
_TRACE("elapsed1 = " + elapsed+" ms"); 


GetPerformanceCounter( True ); 
AlertIf( barcomplete AND Buy, "EXEC Calc.exe", "Buy Share", 3);
elapsed =GetPerformanceCounter(); 
_TRACE("elapsed2 = " + elapsed+" ms"); 


GetPerformanceCounter( True ); 
AlertIf( barcomplete AND Sell, "EXEC Calc.exe", "Sell Share", 3);
elapsed =GetPerformanceCounter(); 
_TRACE("elapsed3 = " + elapsed+" ms"); 



//Magfied Market Price
FS=Param("Font Size",30,11,100,1);
GfxSelectFont("Times New Roman", FS, 700, True );
GfxSetBkMode( colorWhite );
GfxSetTextColor( ParamColor("Color",colorGreen) );
Hor=Param("Horizontal Position",940,1,1200,1);
Ver=Param("Vertical Position",12,1,830,1);
GfxTextOut(""+C, Hor , Ver );
YC=TimeFrameGetPrice("C",inDaily,-1);
DD=Prec(C-YC,2);
xx=Prec((DD/YC)*100,2);
GfxSelectFont("Times New Roman", 11, 700, True );
GfxSetBkMode( colorBlack );
GfxSetTextColor(ParamColor("Color",colorYellow) );
//GfxTextOut(""+DD+" ("+xx+"%)", Hor , Ver+45 );

_SECTION_END();
May God Bless all of us,
Warm Regards,
GG


These AFLs working on my REPLAY


This AFL required plot() to added to function properly
PHP:
Plot(MACD(), "macd", colorAqua);
Plot(Signal(), "signal", colorRed);


Buy = Cross( MACD(), Signal() );
Sell = Cross( Signal(), MACD() );
Short = Sell;
Cover = Buy;

barcomplete = BarIndex() < LastValue(BarIndex());

//Reset Timer
GetPerformanceCounter( True );

Title="";

for(i=0; i<5; i++)
ThreadSleep(100);

elapsed =GetPerformanceCounter();
Title= Title+("elapsed1 = " + elapsed+" ms\n");


GetPerformanceCounter( True );
AlertIf( barcomplete AND Short, "EXEC Calc.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
Title= Title+("elapsed2 = " + elapsed+" ms\n");


GetPerformanceCounter( True );

AlertIf( barcomplete AND Cover, "EXEC Notepad.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
Title= Title+("elapsed3 = " + elapsed+" ms\n");

Jscript work better without plot().
PHP:
_SECTION_BEGIN("aa2");
Buy = Cross( MACD(), Signal() );
Sell = Cross( Signal(), MACD() );
Short = Sell;
Cover = Buy;

barcomplete = BarIndex() < LastValue(BarIndex());

Title="";

//Reset Timer
GetPerformanceCounter( True );



//--- Kelvinhand:  Use this part
EnableScript("jscript");

<%
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
sleep(500);

%>

elapsed =GetPerformanceCounter();
Title=Title+("elapsed1 = " + elapsed+" ms\n");


GetPerformanceCounter( True );
AlertIf( barcomplete AND Short, "EXEC Calc.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
Title=Title+("elapsed2 = " + elapsed+" ms\n");


GetPerformanceCounter( True );

AlertIf( barcomplete AND Cover, "EXEC Notepad.exe", "Launching external application", 3);
elapsed =GetPerformanceCounter();
Title=Title+("elapsed3 = " + elapsed+" ms\n");
_SECTION_END();

so use jscript version
 
Last edited:

Similar threads