Poi passate l'argomento alla funzione, dato che viene fornito. Anche se è meglio rimuoverlo, è una tautologia.
E non tutti gli ordini nel ciclo saranno ricalcolati.
for(i=OrdersTotal()-1; i>=0; i--)
Ho una buona idea per confrontare con altri EAs nello stesso ticker.
L'ho corretto, ho inserito un argomento, l'ho messo nello scope globale, ora genera un avviso che questo argomento è già usato come input in altre funzioni
Il biglietto con sovrascrittura, lavorando dall'ultimo ordine con un Martin.
e poi come rimuovere la dichiarazione globale 'count' hides alla linea...
è interessante farlo funzionare come dovrebbe.
Finora, il tester mostra risultati abbastanza buoni, e a volte "errori insormontabili nell'Expert Advisor".
Mi sono imbattuto in una registrazione in questo formato:
if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;
Cioè... qui l'istruzione condizionale if è stata sostituita da una funzione commercialedi tipo bool invece di un'espressione. Ho capito bene che tale scrittura è uguale a :
trader781: L'ho sistemato, ho messo un argomento, l'ho messo nello scope globale, ora ricevo un avviso che questo argomento è già usato come input in altre funzioni
Biglietto con sovrascrittura, lavoro dall'ultimo ordine con martin
e poi come rimuovere la dichiarazione di 'count' nasconde la dichiarazione globale alla linea...
È interessante farlo funzionare come dovrebbe.
Finora, il tester mostra risultati abbastanza buoni, ma ci sono "errori insormontabili nell'Expert Advisor".
Per favore mostratemi la versione corretta, perché indovinare esce senza il codice.
Mi sono imbattuto in una registrazione in questo formato:
if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;
Cioè... qui l'istruzione condizionale if è stata sostituita da una funzione commercialedi tipo bool invece di un'espressione. Ho capito bene che tale scrittura è uguale a :
Ho cercato sia nell'Aiuto che nel tutorial - non ho trovato un tale formato.
Posso usare questo modo per scrivere direttamente funzioni di tipo diverso invece di un'espressione? Se sì, quale sarebbe l'algoritmo?
Proprio così,se(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; non funziona. La condizione non deve essere buttata fuori dalle parentesi.
Mase(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; è possibile.
Proprio comese(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; non funziona. La condizione non deve essere buttata fuori dalle parentesi.
Mase(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; è possibile.
Sì, mi è sfuggito un refuso con una parentesi. Altrimenti, la domanda è pertinente.
trader781: e come ha ottenuto il biglietto per l'ordine non aperto?
Giusto? Non riesco proprio a metterlo dentro.
for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++; if (OrderType()==OP_BUYSTOP) if (сигнал_bue) OrderDelete(OrderTicket()); else b++; if (OrderType()==OP_SELLSTOP) if (сигнал_sell) OrderDelete(OrderTicket()); else s++; } }
Movlat Baghiyev: Giusto? Non riesco proprio a metterlo dentro.
for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++; if (OrderType()==OP_BUYSTOP) if (сигнал_bue) OrderDelete(OrderTicket()); else b++; if (OrderType()==OP_SELLSTOP) if (сигнал_sell) OrderDelete(OrderTicket()); else s++; } }
Non so come spiegarlo. Ma è sicuramente un capolavoro.
Poi passate l'argomento alla funzione, dato che viene fornito. Anche se è meglio rimuoverlo, è una tautologia.
E non tutti gli ordini nel ciclo saranno ricalcolati.
Il biglietto con sovrascrittura, lavorando dall'ultimo ordine con un Martin.
e poi come rimuovere la dichiarazione globale 'count' hides alla linea...
è interessante farlo funzionare come dovrebbe.
Finora, il tester mostra risultati abbastanza buoni, e a volte "errori insormontabili nell'Expert Advisor".
Saluti.
Mi sono imbattuto in una registrazione in questo formato:
Cioè... qui l'istruzione condizionale if è stata sostituita da una funzione commerciale di tipo bool invece di un'espressione. Ho capito bene che tale scrittura è uguale a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Ho cercato sia nell'Aiuto che nel tutorial - non ho trovato un tale formato.
Posso usare questo modo per scrivere direttamente funzioni di tipo diverso invece di un'espressione? E se sì, quale sarebbe l'algoritmo?
L'ho sistemato, ho messo un argomento, l'ho messo nello scope globale, ora ricevo un avviso che questo argomento è già usato come input in altre funzioni
Biglietto con sovrascrittura, lavoro dall'ultimo ordine con martin
e poi come rimuovere la dichiarazione di 'count' nasconde la dichiarazione globale alla linea...
È interessante farlo funzionare come dovrebbe.
Finora, il tester mostra risultati abbastanza buoni, ma ci sono "errori insormontabili nell'Expert Advisor".
Saluti.
Mi sono imbattuto in una registrazione in questo formato:
Cioè... qui l'istruzione condizionale if è stata sostituita da una funzione commerciale di tipo bool invece di un'espressione. Ho capito bene che tale scrittura è uguale a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Ho cercato sia nell'Aiuto che nel tutorial - non ho trovato un tale formato.
Posso usare questo modo per scrivere direttamente funzioni di tipo diverso invece di un'espressione? Se sì, quale sarebbe l'algoritmo?
Proprio così,se(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; non funziona. La condizione non deve essere buttata fuori dalle parentesi.
Mase(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; è possibile.
Proprio comese(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; non funziona. La condizione non deve essere buttata fuori dalle parentesi.
Mase(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; è possibile.
Per favore, mostratemi la versione corretta, perché senza il codice è un'ipotesi.
Ok.
Più o meno ho finito quello che potevo. La descrizione è fatta. L'obiettivo è capire perché non funziona come vorrei.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1500; //Тейкпрофит ордера
extern double TrailingStop = 1000; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =200;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!=0) Trailing();
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
int b,s,p,res;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
double SL,TP;
//---- buy stop
if(RSI0>50&&RSI1<50)
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50)
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
}
//---- buy stop делете
if(RSI0<50&&RSI1>50)
{
OrderDelete( OrderTicket());
}
//---- sell stop делете
if(RSI0>50&&RSI1<50)
{
OrderDelete( OrderTicket());
}
//----
return(0);
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>TrailingStop)
{
if(OrderStopLoss()<Bid-TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>TrailingStop)
{
if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
e come ha ottenuto il biglietto per l'ordine non aperto?
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}
Giusto? Non riesco proprio a metterlo dentro.
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}