Sì, ma di regola non se ne scrivono più di tre, perché un codice del genere è difficile da leggere dopo, soprattutto se è passato molto tempo da quando è stato scritto. È meglio dividere questi molti if annidati in funzioni separate. O usare l'operatore di commutazione ... caso
c'è un modo per fare in modo che se clicco dopo l'arrivo di una nuova spunta, non appaia una nuova finestra, ma vengano usati i valori della prima finestra?
voidOnTick()
{
if (Orders()<1 && (1==message || !use_MessageBox)){
ticket=OrderSend(Symbol(), OP_SELL, lot, Bid, slippage, Ask+stopLoss*Point, Bid-takeProfit*Point, "", magic, 0, Red); message=0;
}
if (Orders()<1 && (message==0 || message==2) && use_MessageBox){
if(use_PlaySound) PlaySound ("tick");
message=-2;
message =MessageBox("Текст, содержащий сообщение для отображения", "Необязательный текст для отображения в заголовке", IDOK);
}
if (Orders()<1 && (1==message || !use_MessageBox)){
ticket=OrderSend(Symbol(), OP_SELL, lot, Bid, slippage, Ask+stopLoss*Point, Bid-takeProfit*Point, "", magic, 0, Red); message=0;
}
}
void Trailing()
{
for (int i=OrdersTotal() - 1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY)
{
if (Bid - OrderOpenPrice() > TrailingStop*Point)
{
if (OrderStopLoss() < Bid-Point*(TrailingStop+TrailingStep) || OrderStopLoss() == 0)
{
if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue))
Print("error order modify");
}
}
}
}
}
}
if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - Ask > TrailingStop*Point)
{
if (OrderStopLoss() > Ask + Point * (TrailingStop+TrailingStep) || OrderStopLoss() == 0 )
{
if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),OrderTakeProfit(),0,Red))
Print("error order modify");
}
}
}
}
//--------------------------------------------------------
Buon pomeriggio, nei test il trailing funziona come previsto, ma nella vita reale no, o solo una volta ogni tanto, di tanto in tanto spamma con errore OrderModify errore 4108, non riesco a capire cosa c'è di sbagliato, per favore correggetelo, capisco che l'EA non seleziona correttamente gli ordini per la modifica.
Vorrei descrivere la mia EA:
Quando due MA si incrociano, apri 2 posizioni, una corta e una lunga per magia. Il corto chiude o a Takei o all'incrocio MA, il lungo dovrebbe pescare. La selezione di una posizione lunga per una rete a strascico è fatta su un numero magico.
Forse ho fatto un errore in qualche parte del codice all'apertura della posizione:
//BUYif (fast1>slow1&&fast2<slow2)
{
if (StopLoss_1>0) sl=NormalizeDouble(Bid-StopLoss_1*Point,Digits); else sl=0;
if (TakeProfit_1>0) tp=NormalizeDouble(Ask+TakeProfit_1*Point,Digits); else tp=0;
closeshrts();
OrderSend(Symbol(),OP_BUY,Lts,NormalizeDouble(Ask,Digits),5,sl,tp,NULL,0,0,Blue);
}
//BUY_2if (fast1>slow1&&fast2<slow2)
{
if (StopLoss_2>0) sl=NormalizeDouble(Bid-StopLoss_2*Point,Digits); else sl=0;
if (TakeProfit_2>0) tp=NormalizeDouble(Ask+TakeProfit_2*Point,Digits); else tp=0;
closeshrts();
OrderSend(Symbol(),OP_BUY,Lts,NormalizeDouble(Ask,Digits),5,sl,tp,NULL,MagicNumber,0,Blue);
}
//SELLif(fast1<slow1&&fast2>slow2)
{
if (TakeProfit_1>0) sl=NormalizeDouble(Ask+StopLoss_1*Point,Digits); else sl=0;
if (StopLoss_1>0) tp=NormalizeDouble(Bid-TakeProfit_1*Point,Digits); else tp=0;
closelongs();
OrderSend(Symbol(),OP_SELL,Lts,NormalizeDouble(Bid,Digits),5,sl,tp,NULL,0,0,Red);
}
//SELL_2if(fast1<slow1&&fast2>slow2)
{
if (TakeProfit_2>0) sl=NormalizeDouble(Ask+StopLoss_2*Point,Digits); else sl=0;
if (StopLoss_2>0) tp=NormalizeDouble(Bid-TakeProfit_2*Point,Digits); else tp=0;
closelongs();
OrderSend(Symbol(),OP_SELL,Lts,NormalizeDouble(Bid,Digits),5,sl,tp,NULL,MagicNumber,0,Red);
}
Non so, forse dovrei aprire gli ordini tramite un ciclo? E come scrivere correttamente questo codice in modo da impostare gli stop e i take profit corretti? Come l'ho scritto - funziona solo per vendere, per comprare imposta lo stop a 0.
Quello che ho scritto è una citazione di un conoscente. L'ho appena copiato e incollato. Sta cercando di insegnarmi MQL. Mi sto scervellando, quindi, per favore, scrivete quello che ci va.
Quello che ho scritto è una citazione di un conoscente. L'ho appena copiato e incollato. Sta cercando di insegnarmi MQL. Mi sto scervellando, quindi, per favore, scrivete quello che ci va.
a ) un punto interrogativo ( ?)
b ) barra rovesciata ( \)
L'uso dei caratteri cirillici è una caratteristica non documentata
Caratteri che possono essere usati negli ID: cifre 0-9, lettere minuscole e maiuscole a-z e A-Z, riconoscibili come caratteri diversi, carattere underscore (_). Il primo carattere non può essere un numero.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Finché non ti stanchi di scriverli
seriamente?))
Sì, ma di regola non se ne scrivono più di tre, perché un codice del genere è difficile da leggere dopo, soprattutto se è passato molto tempo da quando è stato scritto. È meglio dividere questi molti if annidati in funzioni separate. O usare l'operatore di commutazione ... caso
MessageBox()
c'è un modo per fare in modo che se clicco dopo l'arrivo di una nuova spunta, non appaia una nuova finestra, ma vengano usati i valori della prima finestra?
Buon pomeriggio, nei test il trailing funziona come previsto, ma nella vita reale no, o solo una volta ogni tanto, di tanto in tanto spamma con errore OrderModify errore 4108, non riesco a capire cosa c'è di sbagliato, per favore correggetelo, capisco che l'EA non seleziona correttamente gli ordini per la modifica.
Vorrei descrivere la mia EA:
Quando due MA si incrociano, apri 2 posizioni, una corta e una lunga per magia. Il corto chiude o a Takei o all'incrocio MA, il lungo dovrebbe pescare. La selezione di una posizione lunga per una rete a strascico è fatta su un numero magico.
Forse ho fatto un errore in qualche parte del codice all'apertura della posizione:
Non so, forse dovrei aprire gli ordini tramite un ciclo? E come scrivere correttamente questo codice in modo da impostare gli stop e i take profit corretti? Come l'ho scritto - funziona solo per vendere, per comprare imposta lo stop a 0.
(Per favore, aiutatemi sulla strada giusta))
) entra in gioco.
Quello che ho scritto è una citazione di un conoscente. L'ho appena copiato e incollato. Sta cercando di insegnarmi MQL. Mi sto scervellando, quindi, per favore, scrivete quello che ci va.
a ) punto interrogativo ( ?)
b) backslash (\)
Quello che ho scritto è una citazione di un conoscente. L'ho appena copiato e incollato. Sta cercando di insegnarmi MQL. Mi sto scervellando, quindi, per favore, scrivete quello che ci va.
a ) un punto interrogativo ( ?)
b ) barra rovesciata ( \)
L'uso dei caratteri cirillici è una caratteristica non documentata
Caratteri che possono essere usati negli ID: cifre 0-9, lettere minuscole e maiuscole a-z e A-Z, riconoscibili come caratteri diversi, carattere underscore (_). Il primo carattere non può essere un numero.
sintassi.
Ciao, potresti dirmi perché ZigD[0] non viene emesso in sommente?