Das Problem ist folgendes: Der Wert der Variablen TP wird aus irgendeinem Grund nur für den ersten Wert von j gefunden, während der Wert der Variablen Price für alle Werte von j gefunden wird.
Wie kann ich alle TP-Werte für alle Werte von j erhalten? Was ist mein Fehler?
Bitte sagen Sie mir, warum der Expert Advisor im realen Handel keine Trades öffnen kann, obwohl er im Strategy Tester alles normal öffnet? Und es gibt keine Fehler im Protokoll. Alpari's Demo-Server.
Bitte sagen Sie mir, warum der Expert Advisor im realen Handel keine Trades öffnen kann, obwohl er im Strategy Tester alles normal öffnet? Und es gibt keine Fehler im Protokoll. Alpari's Demo-Server.
das ist schwer zu sagen - es gibt viele Varianten.... Können Sie mir weitere Einzelheiten nennen?
das ist schwer zu sagen - es gibt viele Optionen.... Ich würde gerne mehr Details erfahren.
Ich weiß nicht, alles scheint in Ordnung zu sein, alles funktioniert wie ein Uhrwerk im Tester, aber auf dem Demokonto ist die Zeit schon gekommen, aber es wurden keine Trades eröffnet und auch nicht für die nächste Stunde. Vielleicht sollten Sie sich den Code ansehen.
Weder im Protokoll noch an anderer Stelle wird ein Fehler angezeigt. Wenn es keine Fehler im Code gibt (na ja, vielleicht gibt es ein paar Bugs im Terminal), dann ist es wahrscheinlicher, dass ich mit dem Timing etwas falsch gemacht habe.
Wenn Sie keine Probleme haben, kann ich nicht finden, ein guter Programmierer, ich habe einen EA mit einfachen TS geschrieben, aber es funktioniert nicht richtig!
Also, schauen Sie sich das Bild, die um die Eröffnung am Schnittpunkt von 2 MAs, schnell kreuzt eine langsame MA von unten nach oben - kaufen und umgekehrt, hat der Berater keine Ahnung, wie man Aufträge zu öffnen, ein aufschlussreiches Beispiel im Bild:
1 - Kauf am 03.11.2011, kein Crossover in der Nähe;
3 - Verkauf am 04.11.2011, das Gleiche;
5 - Kauf am 07.11.2011; es ist unklar, warum dieser Auftrag eröffnet wird.
Ich habe auch den Code selbst gesehen:
externint period_EMA = 85,
period_WMA = 5,
period_RSI = 14,
stoploss = 0,
takeprofit = 500,
risk = 10,
Magic = 777;
externbool CloseCounter = false;
externdouble Lot = 0.1;
externint TrailingStop = 70; //если= 0, то трейлинг по фракталам или свечамexternint Tip.Fr.or.Candl = 1; //если= 0, то трейлинг по фракталам //если= 1, то трейлинг по свечам//--------------------------------------------------------------------double SL,TP,LOT;
int TimeBar;
//--------------------------------------------------------------------int start()
{
if (TimeBar==Time[0]) return(0);
double EMA0 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,0);
double WMA0 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,0);
double EMA1 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,1);
double WMA1 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,1);
double RSI = iRSI(NULL,0,period_RSI,PRICE_OPEN,0);
if (EMA0 < WMA0 && EMA1 > WMA1 && RSI > 50)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = Ask + takeprofit*Point;
if (stoploss!=0) SL = Ask - stoploss* Point;
LOT = LOT(risk,1);
if (CloseCounter) CLOSEORDER("Sell");
OPENORDER ("Buy");
}
if (EMA0 > WMA0 && EMA1 < WMA1 && RSI < 50)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = Bid - takeprofit*Point;
if (stoploss!=0) SL = Bid + stoploss* Point;
LOT = LOT(risk,1);
if (CloseCounter) CLOSEORDER("Buy");
OPENORDER ("Sell");
}
TrailingStop();
return(0);
}
//--------------------------------------------------------------------void CLOSEORDER(string ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symbol()||Magic!=OrderMagicNumber()) continue;
if (OrderType()==OP_BUY && ord=="Buy")
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
if (OrderType()==OP_SELL && ord=="Sell")
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
//--------------------------------------------------------------------void OPENORDER(string ord)
{
int error;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP,"EMA WMA RSI",Magic,3);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP,"EMA WMA RSI",Magic,3);
if (error==-1) ShowERROR(error,0,0);
return;
}
//--------------------------------------------------------------------void ShowERROR(int Ticket,double SL,double TP)
{
int err=GetLastError();
switch ( err )
{
case1: return;
case2: Alert("Нет связи с торговым сервером " ,Ticket," ",Symbol());return;
case130: Alert("Error близкие стопы Ticket ", Ticket," ",Symbol());return;
case134: Alert("Недостаточно денег ", Ticket," ",Symbol());return;
case146: Alert("Error Подсистема торговли занята ", Ticket," ",Symbol());return;
case129: Alert("Error Неправильная цена ", Ticket," ",Symbol());return;
case131: Alert("Error Неправильный объем ", Ticket," ",Symbol());return;
default: Alert("Error ",err," Ticket ", Ticket," ",Symbol());return;
}
}
//--------------------------------------------------------------------double LOT(int risk,int ord)
{
if (Lot!=0) return(Lot);
double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
LOT = AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/ord;
if (LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
if (LOT<MINLOT) LOT = MINLOT;
if (MINLOT<0.1) LOT = NormalizeDouble(LOT,2); else LOT = NormalizeDouble(LOT,1);
return(LOT);
}
//--------------------------------------------------------------------void TrailingStop()
{
int tip,Ticket;
bool error;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss();
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY)
{
StLo = SlLastBar(1,Bid,Tip.Fr.or.Candl,TrailingStop);
if (StLo <= OOP) continue;
if (StLo > OSL)
{ error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,Digits),
OrderTakeProfit(),0,White);
Comment("TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Comment("Error order ",Ticket," TrailingStop ",
GetLastError()," ",Symbol()," SL ",StLo);
}
}
if (tip==OP_SELL)
{
StLo = SlLastBar(-1,Ask,Tip.Fr.or.Candl,TrailingStop);
if (StLo==0) continue;
if (StLo >= OOP) continue;
if (StLo < OSL || OSL==0 )
{ error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,Digits),
OrderTakeProfit(),0,White);
Comment("TrailingStop "+Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Comment("Error order ",Ticket," TrailingStop ",
GetLastError()," ",Symbol()," SL ",StLo);
}
}
}
}
}
}
//--------------------------------------------------------------------double SlLastBar(int tip,double price, int tipFr, int tral)
{
double fr;
int jj,ii,delta=5;
if (tral!=0)
{
if (tip==1) fr = Bid - tral*Point;
else fr = Ask + tral*Point;
}
else
{
if (tipFr==0)
{
if (tip== 1)
for (ii=1; ii<100; ii++)
{
fr = iFractals(NULL,0,MODE_LOWER,ii);
if (fr!=0) if (price-delta*Point > fr) break;
else fr=0;
}
if (tip==-1)
for (jj=1; jj<100; jj++)
{
fr = iFractals(NULL,0,MODE_UPPER,jj);
if (fr!=0) if (price+delta*Point < fr) break;
else fr=0;
}
}
else
{
if (tip== 1)
for (ii=1; ii<100; ii++)
{
fr = iLow(NULL,0,ii);
if (fr!=0) if (price-delta*Point > fr) break;
else fr=0;
}
if (tip==-1)
for (jj=1; jj<100; jj++)
{
fr = iHigh(NULL,0,jj);
if (price+delta*Point < fr) break;
else fr=0;
}
}
}
/* if (tip== 1)
{
ObjectDelete("SL Buy");
ObjectDelete("SL-");
ObjectCreate("SL Buy",OBJ_ARROW,0,TIME,fr,0,0,0,0);
ObjectSet ("SL Buy",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Buy",OBJPROP_COLOR, Blue);
ObjectCreate("SL-",OBJ_ARROW,0,TIME,price-delta*POINT,0,0,0,0);
ObjectSet ("SL-",OBJPROP_ARROWCODE,4);
ObjectSet ("SL-",OBJPROP_COLOR, Blue);
}
if (tip==-1)
{
ObjectDelete("SL Sell");
ObjectDelete("SL+");
ObjectCreate("SL Sell",OBJ_ARROW,0,TIME,fr,0,0,0,0);
ObjectSet ("SL Sell",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Sell", OBJPROP_COLOR, Green);
ObjectCreate("SL+",OBJ_ARROW,0,TIME,price+delta*POINT,0,0,0,0);
ObjectSet ("SL+",OBJPROP_ARROWCODE,4);
ObjectSet ("SL+",OBJPROP_COLOR, Green);
}*/return(fr);
}
//--------------------------------------------------------------------
Guten Tag, bitte teilen Sie uns mit, was der Fehler "2011.12.10 12:46:26 TestGenerator: unmatched data error (volume limit 2225 at 2011.11.29 11:00 is exceeded)" bedeutet und wie er behoben werden kann....
Hallo.
Ich habe die folgende Schleife erstellt:
Das Problem ist folgendes: Der Wert der Variablen TP wird aus irgendeinem Grund nur für den ersten Wert von j gefunden, während der Wert der Variablen Price für alle Werte von j gefunden wird.
Wie kann ich alle TP-Werte für alle Werte von j erhalten? Was ist mein Fehler?
Ich danke Ihnen im Voraus.
Wie kann ich alle TP-Werte für alle Werte von j finden? Was ist mein Fehler?
Ich muss die Frage nicht beantworten, ich habe es selbst herausgefunden.
Hallo, könnten Sie mir bitte sagen, wie ich den Tiefst- und Höchststand der letzten Kerze finden kann, zum Beispiel
Ist der letzte derjenige, der sich noch nicht vollständig gebildet hat?
Bitte sagen Sie mir, warum der Expert Advisor im realen Handel keine Trades öffnen kann, obwohl er im Strategy Tester alles normal öffnet? Und es gibt keine Fehler im Protokoll. Alpari's Demo-Server.
Bitte sagen Sie mir, warum der Expert Advisor im realen Handel keine Trades öffnen kann, obwohl er im Strategy Tester alles normal öffnet? Und es gibt keine Fehler im Protokoll. Alpari's Demo-Server.
das ist schwer zu sagen - es gibt viele Varianten.... Können Sie mir weitere Einzelheiten nennen?
das ist schwer zu sagen - es gibt viele Optionen.... Ich würde gerne mehr Details erfahren.
Weder im Protokoll noch an anderer Stelle wird ein Fehler angezeigt. Wenn es keine Fehler im Code gibt (na ja, vielleicht gibt es ein paar Bugs im Terminal), dann ist es wahrscheinlicher, dass ich mit dem Timing etwas falsch gemacht habe.Ich weiß nicht, alles scheint in Ordnung zu sein, alles funktioniert wie ein Uhrwerk im Tester, aber auf dem Demokonto ist die Zeit schon gekommen, aber es wurden keine Trades eröffnet und auch nicht für die nächste Stunde. Vielleicht sollten Sie sich den Code ansehen.
Der letzte ist derjenige, der sich noch nicht vollständig gebildet hat?
Wenn Sie keine Probleme haben, kann ich nicht finden, ein guter Programmierer, ich habe einen EA mit einfachen TS geschrieben, aber es funktioniert nicht richtig!
Also, schauen Sie sich das Bild, die um die Eröffnung am Schnittpunkt von 2 MAs, schnell kreuzt eine langsame MA von unten nach oben - kaufen und umgekehrt, hat der Berater keine Ahnung, wie man Aufträge zu öffnen, ein aufschlussreiches Beispiel im Bild:
1 - Kauf am 03.11.2011, kein Crossover in der Nähe;
3 - Verkauf am 04.11.2011, das Gleiche;
5 - Kauf am 07.11.2011; es ist unklar, warum dieser Auftrag eröffnet wird.
Ich habe auch den Code selbst gesehen:
Herzlichen Dank im Voraus!
Guten Tag, bitte teilen Sie uns mit, was der Fehler "2011.12.10 12:46:26 TestGenerator: unmatched data error (volume limit 2225 at 2011.11.29 11:00 is exceeded)" bedeutet und wie er behoben werden kann....