Wie programmiert man? - Seite 22

 

Sie können immer int crossTime = Time[0] schreiben, wenn Sie ein Kreuz hatten, und dann die Funktion iBarShift mit der Variablen crossTime verwenden, um zu prüfen, wie viele Takte vergangen sind.

 

Hallo Kalenzo,

Kalenzo:
Sie können immer int crossTime = Time[0] schreiben, wenn Sie ein Cross hatten, und dann die Funktion iBarShift mit der crossTime-Variable verwenden, um zu prüfen, wie viele Bars vergangen sind.

Wie würden Sie diesen Code schreiben, um nur "Bear Bars" in die Zählung aufzunehmen?

Ich verstehe die ibarshift, aber dies würde alle Bars seit Kreuz enthalten. Sie müssten noch ein Zählsystem verwenden, wie ich es habe, um "Bear Bars" zu zählen und ich glaube, das ist, wo mein Problem liegt.

Ursprünglich habe ich meinen Code mit diesem Code getestet .... Das funktionierte gut.... aber nicht in den Code oben, die tatsächlich in meinem EA aufgeführt werden würde übersetzen

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Jede andere Gedanken würde geschätzt werden.

Danke!

SaxMan

 

Tut mir leid, Omelett,

Das funktioniert auch nicht.

Danke!

SaxMan

omelette:
Hallo. Versuchen Sie dies.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

Zeitlimit mit EA-Code

Ich kann nicht sehen, um ein Zeitlimit auf meinem EA zu platzieren

Die Codezeile lautet wie folgt:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ich habe versucht, die NULL in eine 1 oder in eine 12 zu ändern, aber ich kann den Handel nicht stoppen... ich möchte, dass der Handel in 12 Stunden abläuft, wie kann ich das machen?

Ich benutze ein Backtesting, um sicher zu gehen, dass es funktioniert... die expire-Funktion funktioniert doch damit, oder?

 

Versuchen Sie dies....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Version abgelaufen");

return(0);

}

// code

return(0);

}

Dave

 
islandrock:
Ich kann nicht sehen, um eine zeitliche Begrenzung auf meinem EA zu platzieren

Die Codezeile lautet wie folgt:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ich habe versucht, die NULL in eine 1 oder in eine 12 zu ändern, aber ich kann den Handel nicht stoppen... ich möchte, dass der Handel in 12 Stunden abläuft, wie kann ich das machen?

Ich verwende ein Backtesting, um sicherzugehen, dass es funktioniert. Die Expire-Funktion funktioniert doch damit, oder?

Prüfen Sie den Fehlerkanal;

In einigen Handelsservern kann die Anwendung der Verfallszeit für schwebende Aufträge deaktiviert werden. In diesem Fall wird der Fehler 147 (ERR_TRADE_EXPIRATION_DENIED) generiert, wenn ein Wert ungleich Null im Verfallsparameter angegeben wird.

Der Parameter ist eine "datetime"-Variable, und ich glaube nicht, dass 12 in diese Variablendeklaration fällt.

 
islandrock:
Ich kann nicht sehen, um ein Zeitlimit auf meinem EA zu platzieren

Die Codezeile lautet wie folgt:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ich habe versucht, die NULL in eine 1 oder in eine 12 zu ändern, aber ich bekomme es nicht hin, den Handel zu stoppen ... ich möchte, dass der Handel in 12 Stunden abläuft, wie kann ich das tun?

Ich verwende ein Backtesting, um sicher zu gehen, dass es funktioniert. Die Expire-Funktion funktioniert doch damit, oder?

Hallo. Verfallszeitüberschreitungen funktionieren gut mit MT, der einzige Nachteil ist, dass einige Broker sie nicht zulassen - FXDD ist einer davon. Die Ablaufzeit muss im Datumsformat angegeben werden, damit es funktioniert - d.h..

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

Ich habe folgendes ausprobiert.

extern int TradeLifeHour=12;

extern int TradeLifeMin=00;

datetime expirationtime; (wusste nicht, was hier hingehört)

dann innerhalb von start()

expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;

und verwenden Sie expirationtime im Bereich 0.

Ich habe den letzten Code, aber ich weiß nicht, wie man ihn so konfiguriert, dass der Handel in 12 Stunden abläuft.

 
xxDavidxSxx:
Versuchen Sie dies....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Version abgelaufen");

return(0);

}

// code

return(0);

}

Dave

Ich habe einfach den Code verwendet, den ich Ihnen gegeben habe. Ich änderte das Datum auf 2006 und fügte es an einer zufälligen Stelle in Bipoler auf einem FXDD-Konto mit echtem Geld ein, und es funktionierte wie ein Zauber.

Oder sind die Minen zu einfach? Ich weiß nicht

Dave

 

??

dieser Code nicht machen jeden Handel meine EA öffnet 12 Stunden ab dem Zeitpunkt ablaufen es öffnet...

Grund der Beschwerde: