Ich werde einen kostenlosen mql4-Berater schreiben - Seite 7

 
Hallo, ich habe eine Idee, ich kann sie Ihnen hier oder persönlich mitteilen, sagen Sie mir, wie sie Ihnen gefällt.
 
Hallo, können Sie mir helfen, meinen EA zu verfeinern?
 
Andrey Luxe:

Um Erfahrungen in diesem Bereich zu sammeln, werde ich 25 EAs kostenlos für Ihre interessanten Ideen und Strategien schreiben

Nur noch 19 EAs übrig

Ich habe ein solches Problem, ich habe bereits ein EA und es funktioniert gut, das Problem ist mit Trailing Stop Block. Sie funktioniert aus irgendeinem Grund nicht und lässt sich nicht öffnen, wenn sie gehandelt wird. Hier ist der EA selbst. Vielleicht haben Sie eine Idee, was mit dem Trailing-Stop falsch ist? Ich wüsste nicht, was ich ohne sie tun sollte.

Ishimoku - MACD.mq4 |

//| TO |

//| http://www.forex-tradexperts-to.narod.ru |

//+------------------------------------------------------------------+

#property copyright "TO"

#property link "http://www.forex-tradexperts-to.narod.ru"

#include <WinUser32.mqh>


extern string Parameter=" Ichimoku";

extern intern tenkan_sen=3;

extern intern kijun_sen=48;

extern intern senkou_span_b=52;

extern string Parameter="Gleitender Durchschnitt";

extern int maPeriod=4;

extern int ma_method=1;

extern int applied_price=3;

extern string Parameter=" MACD";

extern int FastEMA=22;

extern int SlowEMA=52;

extern int SignalEMA=9;

externer String Parameter=" EA";

extern int TP=200;

extern int SL=500;

extern int Schlupf=3;

extern double lot=0.1;

extern bool Add1/*(TENKANSEN bzw. KIJUNSEN)*/ =true;

extern bool Add2/*(TENKANSEN revised Ma)*/=true;

extern bool trailing=true;

extern double trailingStop=200;

extern int zashita=1;


bool buy1=false,buy2=false,buy3=false,buy4=false;

bool sell1=false,sell2=false,sell3=false,sell4=false,sell22=false; buy22=false;

int ticket=0;

int i;

datetime t1=0,t2=1,t3=1,t4=1,t5=1,t7=1,t8=1;

int init()

{

zurück(0);

}

int deinit()

{

zurück(0);

}


int start()

{

t1=Zeit[0];


double MACDRED1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);

double MACDRED2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,2);

double MACDBLUE1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,1);

double MACDBLUE2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,2);

double IshRed1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,1);

double IshRed2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,2);

double IshBlue1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,1);

double IshBlue2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,2);

double MA1=iMA(NULL,0,maPeriod,0,ma_method,applied_price,1);

double MA2=iMA(NULL,0,MaPeriod,0,ma_method,applied_price,2);

if(MACDRED1>MACDBLUE1 && MACDRED2<MACDBLUE2 && t3!=t1)

{ // MACD-Kaufsignal

buy1=true;sell1=false;t3=Time[0];

}

if(MACDRED1<MACDBLUE1 && MACDRED2>MACDBLUE2 && t3!=t1)

{ // MACD-Verkaufssignal

sell1=true;buy1=false;t3=Time[0];

}

if(IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)

{ // Ishimoku-Signal kreuzt den MA bei BUY

buy2=true;sell2=false;t4=Time[0];

}

if(IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)

{ // Ishimoku-Signal kreuzt MA bei SELL

sell2=true;buy2=false;t4=Time[0];

}

if(IshRed1>IshBlue1 && IshRed2<IshBlue2 && t5!=t1)

{ // Ishimoku-Signal Fast crosses Slow to BUY

buy3=true;sell3=false;t5=Time[0];

}

if(IshRed1<IshBlue1 && IshRed2>IshBlue2 && t5!=t1)

{// Signal auf Ishimoku Fast kreuzt Slow auf SELL

sell3=true;buy3=false;t5=Time[0];

}

if(Add1==true && buy3==true && buy4==true && t1!=t8)

{ //Zusätze öffnen

PlaySound("Alert.wav");

int=MessageBox("Einen Auftrag zum Kauf hinzufügen?",MB_YESNO|MB_ICONQUESTION);

if(ret==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");}

t8=Zeit[0];buy3=false;buy4=false;

}

if(Add1==true && sell3==true && sell4==true && t1!=t7)

{ //Zusätze öffnen

PlaySound("Alert.wav");

int ret2=MessageBox("Add a Sell order?",MB_YESNO|MB_ICONQUESTION);

if(ret2==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");}

t7=Zeit[0];sell3=false;sell4=false;

}

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(Auftragsart()==OP_BUY)

{

buy1=false;buy2=false;buy22=true;

Pause;

}

}

if(Add2==true && buy22 && IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)

{ // Hinzufügen von Ma und Tenkan_Sen zu Kaufen

PlaySound("Alert.wav");

int ret3=MessageBox("Einen Auftrag zum Kauf hinzufügen?",MB_YESNO|MB_ICONQUESTION);

if(ret3==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");}

t4=Time[0];buy22=false;

}

if(Add2==true && sell22 && IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)

{ // Hinzufügen von Ma und Tenkan_Sen bei Sell

PlaySound("Alert.wav");

int ret4=MessageBox("Einen Auftrag zum Verkauf hinzufügen?",MB_YESNO|MB_ICONQUESTION);

if(ret4==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");}

t4=Time[0];sell22=false;

}

if(buy1==true && buy2==true && t1!=t2)

{ //Eröffnung der ersten Aufträge

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Gold);

}

PlaySound("Alert.wav");

ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);

if(ticket>0)PlaySound("ok.wav");

if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");

t2=Zeit[0];buy1=false;buy2=false;buy4=true;

}

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL)

{

sell1=false;sell2=false;sell22=true;

Pause;

}

}

if(sell1==true && sell2==true && t1!=t2)

{ //Eröffnung der ersten Aufträge

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Gold);

}

PlaySound("Alert.wav");

ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask+SL*Point,Bid-TP*Point,NULL,0,0,Red);

if(ticket>0)PlaySound("ok.wav");

if(ticket<0)Alert("Auftrag nicht gesetzt!!! Fehler - "+GetLastError()+"manuell gesetzt");

t2=Zeit[0];sell1=false;sell2=false;sell4=true;buy22=false;

}

//Schleppender Anschlag

double SL,TP,openprice,profit;

int ticketOrder,zamok,type;

string comm;

for(i=BestellungenGesamt();i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(trailing==true && OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)>0 && MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop)!=0 && (OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE))>=trailingStop*MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop))

{

if(OrderType()==0){SL=Bid-trailingStop*Point;if(SL==OrderOpenPrice())SL+=zashita*Point;}

if(OrderType()==1){SL=Ask+trailingStop*Point;if(SL==OrderOpenPrice())SL-=zashita*Point;}

TP=OrderTakeProfit();

if(OrderType()==0)if(SL>=OrderStopLoss()+trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);

if(OrderType()==1)if(SL<=OrderStopLoss()-trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);

}

}

zurück(0);

}

 

Ich werde nicht auf alle antworten, aber es ist definitiv ein Fehler:

for(i=OrdersTotal();i>=0;i--)

Die letzte Bestellung ist OrdersTotal()-1.

 
Hallo, können Sie mir mit einem fertigen EA auf Ishimoku und MASD helfen. Der EA funktioniert, aber aus irgendeinem Grund setzt er keinen Trailing-Stop, wenn Bedingungen auftreten. Ich kenne mich mit MQL4 nicht aus und bin mir daher nicht sicher, was ich daran ändern muss. Wahrscheinlich liegt ein Fehler im Trailing-Stop-Block vor. Ich danke Ihnen im Voraus. Ohne diese Funktion ist dies ein erheblicher Nachteil für den Handel.
Dateien:
 

können Sie kostenlos einen Multi-EA schreiben/entwickeln?

Der Dummy ist verfügbar.

 

Hallo, ich möchte Sie um Ihre Hilfe bei der Verschreibung von T/P und Magic_Number in meinem EA bitten. Mit freundlichen Grüßen Timofey.

 

Guten Tag.

Wie würden Sie ein solches Stück schreiben?

double a; //

double b; // Sowohl a als auch b können absolut beliebige Werte annehmen: Zahlen, Indikatorwerte, Anzahl der Ticks für 500 Kerzen usw.

double X; // Abweichungswert +-X

wenn

(a+x und a-x) fällt in das Feld der Werte (b+x und b-x)

{Aktion}

sonst

{Rückgabe 0}

 
trader781:

Guten Tag.

Wie würden Sie ein solches Stück schreiben?

double a; //

double b; // Sowohl a als auch b können absolut beliebige Werte annehmen: Zahlen, Indikatorwerte, Anzahl der Ticks für 500 Kerzen usw.

double X; // Abweichungswert +-X

wenn

(a+x und a-x) fällt in das Feld der Werte (b+x und b-x)

{Aktion}

sonst

{Rückgabe 0}

Wenn x in allen Fällen derselbe Wert ist, vergleichen Sie im Wesentlichen zwei Zahlen a und b. Es steht außer Frage, dass wir hier eine Pause einlegen müssen.

Nehmen wir zum Beispiel a = 10, b = 11. Sie wollen also, dass das Intervall 12 bis 8 in das Intervall 13 bis 9 fällt?

 
Alexey Kozitsyn:

Wenn x in allen Fällen gleich ist, vergleichen Sie im Wesentlichen zwei Zahlen a und b. Von einem Intervall ist nicht die Rede.

Nehmen wir zum Beispiel a = 10, b = 11. Sie wollen also, dass das Intervall 12 bis 8 in das Intervall 13 bis 9 fällt?

Das ist richtig.