[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 289

 

Beh fondamentalmente la strategia in sé è molto lunga e complessa, e non ha senso descriverla, è 1 punto per creare un ciclo cioè ho bisogno di trovare qualcosa invece di total==1 che non apra una posizione non corrispondente alla richiesta, cioè se chiude su st allora .........open 1, se chiuso a ......... тп open 2, la condizione mancanza di un ordine nel mercato, questo è tutto,

 
FoxUA:

Beh fondamentalmente la strategia in s矇 癡 molto lunga e complessa, e non ha senso descriverla, 癡 1 punto per creare un ciclo cio癡 ho bisogno di trovare qualcosa invece di total==1, che non apre posizioni che non corrispondono alla richiesta, cio癡 se si chiude su st allora .........open 1, se chiuso a ......... тп open 2, la condizione abscence orders in the market, questo 癡 tutto,


Allora è meglio non usare la funzione di Igor. Hai bisogno di una funzione che restituisca il tipo dell'ultimo ordine chiuso e perché è stato chiuso. Non restituirà il motivo dell'ultimo ordine chiuso di un certo tipo. Cercherò di pensare a qualcosa ora...

 
Figar0:


Allora non sei adatto alla funzione di Igor che stai usando. Hai bisogno di una funzione che restituisca il tipo dell'ultimo ordine chiuso e il motivo per cui è stato chiuso (tap o sl). Non restituirà il motivo dell'ultimo ordine chiuso di un certo tipo. Cercherò di pensare a qualcosa ora...


Se avete qualcosa di simile a Klimovskoe che restituisce un valore solo per l'ultimo ordine di chiusura, vi sarei molto grato
 

Provate una tale funzione insieme a quella di Igor:

//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2011                                                     |
//|  Описание : Возвращает тип последней закрытой позиции                      |
//|  если Buy 1 , если Sell -1                                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    symbol - наименование инструмента                                       |
//|    magic - MagicNumber                                                     |
//+----------------------------------------------------------------------------+
int LastCloseDeal(string symbol, int magic) 
{
  int lastclosetime=-1;
  int lastcloseticket=-1;
  int lastdealtype=0;

  for (int i=0; i<OrdersHistoryTotal(); i++) 
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; 
    if (OrderSymbol()==symbol || OrderMagicNumber()==magic) 
    {
      if (lastclosetime<OrderCloseTime()) 
      {
        lastclosetime=OrderCloseTime();
        lastcloseticket=OrderTicket();
      }
    }
  }

  if (OrderSelect(lastcloseticket, SELECT_BY_TICKET, MODE_HISTORY)) 
  {
    if (OrderType()==OP_BUY) lastdealtype=1;
    if (OrderType()==OP_SELL) lastdealtype=-1;   
  }
  return(lastdealtype);
}
 

Il tuo pezzo di codice dovrebbe quindi assomigliare a questo

bool Buystop=isCloseLastPosByStop(NULL,OP_BUY,MagBuy);
bool BuyTake=isCloseLastPosByTake(NULL,OP_BUY,MagBuy);
bool Sellstop=isCloseLastPosByStop(NULL,OP_SELL,MagBuy);
bool SellTake=isCloseLastPosByTake(NULL,OP_SELL,MagBuy);

//--------------------------------------------------------------------------------+
if(total==1) 
 {

   if (LastCloseDeal(Symbol(), MagBuy)==1)

  {
      if(Buystop==True)    OpenPosition(NULL, OP_SELL, Lot,Bid+Sl3*Point, Bid-Tp3*Point,MagBuy);
      if(BuyTake==True)   OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy);      
   }

   if (LastCloseDeal(Symbol(), MagBuy)==-1)

   { 
      if(Sellstop==True)   OpenPosition(NULL, OP_BUY,  Lot, 0, Ask+Tp*Point,MagBuy);
      if(SellTake==True)    OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy); 
   }  

}

 
Figar0:

Il tuo pezzo di codice dovrebbe quindi assomigliare a questo


Grazie, farò una prova.
 
Per essere più precisi: invece di inviare i dati sui nuovi SL, l'EA dovrebbe semplicemente memorizzarli nelle variabili (o da qualche altra parte), e continuare a fare trailing, trailing, e quando il prezzo raggiunge un certo livello (prezzo), inviare un segnale al DC per chiudere l'ordine, (una sorta di trailing stop virtuale con stoploss virtuale). In altre parole, l'Expert Advisor include un trailing stop su un livello invisibile da 1 pip... è realistico?
 
Centuriy:
Per essere più precisi: invece di inviare dati su un nuovo SL, l'EA deve semplicemente memorizzarli in variabili (o da qualche altra parte), e seguire, seguire, seguire, seguire, e quando il prezzo raggiunge un certo livello invia un segnale alle società di brokeraggio sulla chiusura di un ordine, (una sorta di trailing stop virtuale con stoploss virtuale). In altre parole, l'Expert Advisor include un trailing stop su un livello invisibile da 1 pip... è realistico?


Sì, è reale, naturalmente. Si guarda attraverso gli ordini aperti, hanno un prezzo aperto, per esempio, abbiamo un ordine di acquisto aperto al prezzo di X, stop-loss virtuale Y punti, quindi se il prezzo corrente Z < = X-Y*Punto l'ordine dovrebbe essere chiuso. Naturalmente, dobbiamo anche prendere in considerazione gli spread e se lo stop loss non è fisso ma calcolato, il valore calcolato deve essere immagazzinato in modo sicuro da qualche parte, ecc.

Cerca "virtual stop", "virtual stoploss" ecc.

 
Figar0:


È realistico, naturalmente. Se guardiamo tra gli ordini aperti, il loro prezzo aperto sarà impostato, per esempio, abbiamo un ordine di acquisto aperto al prezzo X e lo stoploss virtuale è Y punti quindi se il prezzo corrente Z <=X-Y*Punto l'ordine sarà chiuso. Naturalmente dobbiamo tenere conto degli spread, e se lo stop loss non è fisso ma calcolato, allora il valore calcolato deve essere immagazzinato in modo sicuro da qualche parte, ecc.

Cerca "virtual stop", "virtual stoploss" ecc.

Penso che non possiamo fare a meno di avere una nostra contabilità degli ordini di qualche tipo.

Crea il tuo array di ordini e memorizza in esso tutti i dati necessari per lo stop virtuale.

 
Figar0:


Sì, è reale, naturalmente. Si guarda attraverso gli ordini aperti, hanno un prezzo aperto, per esempio, abbiamo un ordine di acquisto aperto al prezzo di X, stop-loss virtuale Y punti, quindi se il prezzo corrente Z < = X-Y*Punto l'ordine dovrebbe essere chiuso. Naturalmente, dobbiamo anche prendere in considerazione gli spread e se lo stop loss non è fisso ma calcolato, il valore calcolato deve essere immagazzinato in modo sicuro da qualche parte, ecc.

Cerca "virtual stop", "virtual stoploss" ecc.

Grazie per la risposta, è solo il trailing stop (trailing stop) che è il problema, voglio trail 1 pip min, e voglio inviare orderModify alla società di brokeraggio con ogni tick - è solo teppismo IMHO ))

"Se lo stop loss non è fisso ma calcolato, il valore calcolato deve essere memorizzato in modo sicuro da qualche parte".

dove memorizzare e come chiamarlo... credo che debba essere una variabile, o mi sbaglio...

Motivazione: