@Konstantin Nikitin Du hast es leichter, du bist ein Experte! Ich lerne noch!
if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol()!=Symbol()) continue;
А это как прочитать? Если (Ордер не выбран) продолжить;
Если (Текущий Символ не равен Символу) продолжить; Так? Или как?
Meine Freunde, wer weiß, wie man implementiert: ein EA kann den absoluten Wert eines Indikators erhalten, zum Beispiel iStohastic(). Wie kann ich feststellen, ob der Indikator den überkauften oder überverkauften Bereich verlassen hat?
Optisch wie ein Stochastik-Indikator mit den Stufen 80 und 20.
void STOP_TAKE(void)
{
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
if (stoploss<STOPLEVEL) stoploss=0;
if (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol()) continue;
int tip = OrderType();
if( tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT &&
tip!=OP_SELL && tip!=OP_SELLSTOP && tip!=OP_SELLLIMIT ) continue;
// переменные которые будут использоваться в любых ордерахint Ticket = OrderTicket();
double OOP = OrderOpenPrice(),
OSL = OrderStopLoss(),
OTP = OrderTakeProfit();
//---if( OrderMagicNumber() == Magic )
{ //----------Если Ордера Советникаswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
}
else
{ //----------Если Ордера Оператораswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
} // end if
} // end for
} // end STOP_TAKE
Obwohl Sie bei der Änderung von EA- und anderen Aufträgen genau dieselbe Logik anwenden. Warum genau man sie unterscheiden muss, ist nicht ganz klar. Aber ich denke, das Prinzip ist nützlich.
@Konstantin Nikitin Du hast es leichter, du bist ein Experte! Ich lerne noch!
Rewerpool:
Wie ist das zu verstehen? Wenn (Bestellung nicht ausgewählt ist), fahren Sie fort;
Wenn (Aktuelles Symbol ist nicht gleich Symbol) weiter; Richtig? Oder wie?
Bediener fortfahren
@Konstantin Nikitin Verstanden, also: Korrigieren Sie mich, wenn etwas ist!
Und noch eine Frage: !OrderSelect - bedeutet das: No Order oder No Order selected?
Verstanden, also: Korrigieren Sie mich, wenn es etwas gibt!
Wenn keine Reihenfolge ausgewählt wird, wird das nächste Element der Schleife ausgewählt.
Operationen und Ausdrücke und betrachten Sie dort die logischen Operationen
fügte mehr wie diese hinzu:
Warum sollte man das überhaupt so schreiben?
Wenn Sie den EA nur auf ein Symbol setzen, wird er aber auf allen Symbolen funktionieren? Und der Magier wird sein eigenes sehen!
Völlig verwirrt!
Meine Freunde, wer weiß, wie man implementiert: ein EA kann den absoluten Wert eines Indikators erhalten, zum Beispiel iStohastic(). Wie kann ich feststellen, ob der Indikator den überkauften oder überverkauften Bereich verlassen hat?
Optisch wie ein Stochastik-Indikator mit den Stufen 80 und 20.
Rewerpool: Na also, es geht doch, keine Fehler.
Obwohl Sie bei der Änderung von EA- und anderen Aufträgen genau dieselbe Logik anwenden. Warum genau man sie unterscheiden muss, ist nicht ganz klar. Aber ich denke, das Prinzip ist nützlich.