[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 2

 
tara:
Che ne dici di due?
Poi i nomi sono in ordine alfabetico.
 
     // Проверяем все открытые ордера---------------------------------------------------------------------------

    for(n=0,i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC+1 || OrderMagicNumber()>MAGIC+3) continue;
      no=OrderMagicNumber()-MAGIC;
      
      if(no==1)
      {
         n++;
         if(OrderType()==OP_SELL) { if(OrderOpenTime()>=ltts && BSo1==OP_SELL) s1=true; 
         if(MathAbs((OrderOpenPrice()-NormalizeDouble(Bid,Digits))/Point)<Add){OS1=1;} // Запрет на открытие селл

            } else
         if(OrderType()==OP_BUY) { if(OrderOpenTime()>=lttb && BSo==OP_BUY) b1=true;
         if(MathAbs(OrderOpenPrice()-NormalizeDouble(Ask,Digits))/Point<Add){OB1=1;} // Запрет на открытие бай
         }     
      }
   }
Buon pomeriggio.
Il compito è quello di aprire un ordine ad una certa distanza "Add" da un ordine già aperto.
Vengono controllati gli ordini di acquisto e di vendita separati.
Ho scritto questo codice. Sembra che funzioni, ma a volte il prezzo copre una distanza più lunga del "Aggiungi" ma l'ordine non viene aperto.
Ho provato con le stampanti ma la condizione "Aggiungi" non funziona correttamente e non so cosa c'è di sbagliato.
Forse qualcuno mi dirà cosa fare?
 

Cari signori, sono rimasto perplesso sulla soluzione di un problema legato alle requote.

Situazione: Expert Advisor apre ordini dal mercato con hard stop e takeover in pip, lavora su una barra chiusa, M15. Viene ricevuto un segnale di apertura dell'ordine e l'Expert Advisor cerca di aprire l'ordine diverse volte ma non ci riesce. Sulla barra successiva il segnale si ripete e l'Expert Advisor apre l'operazione, ma il tasso ha lasciato il punto in cui è stato dato il primo segnale. Si scopre che lo stop and take sarà impostato dal tasso al quale l'affare è stato aperto, piuttosto che dal tasso al quale il primo segnale di apertura. Ho scritto una costruzione tale che quando si imposta uno stop and take, l'Expert Advisor prenderebbe il prezzo al quale è stato ricevuto il primo segnale.

  if(sg==1 && TimeCurrent()-buy_time>=1800) {buy_price=Ask;buy_time=TimeCurrent();}//
  if(sg==-1 && TimeCurrent()-sell_time>=1800) {sell_price=Bid;sell_time=TimeCurrent();}//
где,
sg==1 сигнал на покупку
sg==-1 сигнал на продажу
buy_time - переменная в которую запоминаем время поступления сигнала на покупку
sell_time - переменная в которую запоминаем время поступления сигнала на продажу

при выставлении ордера стоп и тейк прибавляем/вычитаем не от текущей цены а от buy_price и sell_price

Voglio spiegare perché voglio usare il primo segnale: le dimensioni di stop e take sono state selezionate nel tester e sono più o meno ottimali, se impostiamo gli stop/stop del secondo segnale, non saranno ottimali perché il tasso di apertura effettivo è diverso da quello del primo segnale.

 
evillive:

Gli ordini di compravendita sono in totale 1, cioè non raggiungiamo mai il più vecchio. In secondo luogo, pesca a strascico gli ordini dal più recente al più vecchio, e quelli più vecchi possono essere chiusi con stop o take prima che il peschereccio li raggiunga. In generale, cosa non funziona, avete dei log degli errori?


TS non funziona affatto, diverse volte ho notato che "come progettato" non chiude affatto le posizioni.

E per quanto riguarda gli ordini di chiusura, potresti scrivere più dettagli, dato che l'EA è multivaluta, ma con un limite di 1 trade su una valuta alla volta.

 
Stells:
Buon pomeriggio.
Il compito è quello di aprire un ordine ad una certa distanza "Add" da un ordine già aperto.
Vengono controllati gli ordini di acquisto e di vendita separati.
Ho scritto questo codice. Sembra che funzioni, ma a volte il prezzo copre una distanza più lunga del "Aggiungi" ma l'ordine non viene aperto.
Ho provato le stampe ma la condizione "Aggiungi" non funziona correttamente e non so cosa c'è di sbagliato.
Forse qualcuno mi dirà cosa fare?


Le caratteristiche di Igor Kim, semplicemente e convenientemente.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |7
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
  double d, p;
  int i, k=OrdersTotal(), r=1000000;

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
          if (OrderType()==OP_SELL) {
            d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
            if (r>d) r=NormalizeDouble(d, 0);
          }
        }
      }
    }
  }
  return(r);
}
 
Sancho77:

Cari signori, sono rimasto perplesso sulla soluzione di un problema legato alle requote.

Situazione: Expert Advisor apre ordini dal mercato con hard stop e takeover in pip, lavora su una barra chiusa, M15. Viene ricevuto un segnale di apertura dell'ordine e l'Expert Advisor cerca di aprire l'ordine diverse volte ma non ci riesce. Sulla barra successiva il segnale si ripete e l'Expert Advisor apre l'operazione, ma il tasso ha lasciato il punto in cui è stato dato il primo segnale. Si scopre che lo stop and take sarà impostato dal tasso al quale l'affare è stato aperto, piuttosto che dal tasso al quale il primo segnale di apertura. Ho scritto una costruzione tale che quando si imposta uno stop and take, l'Expert Advisor prenderebbe il prezzo al quale è stato ricevuto il primo segnale.

Voglio spiegare perché voglio usare il primo segnale: le dimensioni di stop e take sono state selezionate nel tester e sono più o meno ottimali, se si impostano stop/stop dal secondo segnale, risulterà che non sono ottimali, perché il tasso di apertura effettiva dell'affare è diverso dal tasso al primo segnale.

Si scopre che l'ottimalità è determinata solo dai livelli tp e sl, mentre il prezzo di accordo può essere qualsiasi? Non sembra logico.
 
alsu:
Si scopre che l'ottimalità è determinata solo dai livelli tp e sl, mentre il prezzo di accordo può essere qualsiasi? Non sembra logico.

L'ottimalità non è determinata solo da uno stop and take, è principalmente determinata dai parametri del segnale per aprire un affare, non ho dato questi segnali per non sovraccaricare la mia domanda, i parametri del segnale infatti non riguardano il problema in questione. Il prezzo dell'affare può essere qualsiasi, se il segnale di apertura dell'affare è salvato.

Vi sarei grato se poteste dare la vostra opinione sull'essenza della mia domanda, cioè se il codice per il calcolo dei livelli da cui verrà calcolato uno stop and take è scritto correttamente?

 
Sancho77:

Non ho il codice a portata di mano, ma ho fatto qualcosa di simile per me, ma non così: ricordavo il tempo della barra in cui c'era un segnale, e quando un ordine veniva piazzato usando questo segnale, azzeravo il tempo del segnale, e così via:

datetime buy_time,sell_time;
int init(){
   buy_time = 0;
   sell_time = 0;
}
int start(){
   if(buy_time==0 && Open[1]>Close[2]) buy_time = TimeCurrent();
   .......
   if(buy_time!=0){
      OrderSend(.........);
      buy_time = 0;
   }
return(0);
}
Beh, se la domanda riguarda il combattere solo le requote, allora guardate nel thread di Igor Kim, quasi tutte le funzioni per piazzare ordini hanno un parametro per quante volte provare a piazzare l'ordine
 
Sancho77:

L'ottimalità non è determinata solo da uno stop and take, è principalmente determinata dai parametri del segnale per aprire un affare, non ho dato questi segnali per non sovraccaricare la mia domanda, i parametri del segnale infatti non riguardano il problema in questione. Il prezzo dell'affare può essere qualsiasi, se il segnale di apertura dell'affare è salvato.

Vi sarò grato se direte la vostra opinione sull'essenza della mia domanda, cioè se il codice per il calcolo dei livelli da cui verranno calcolati stop e take è scritto correttamente?

Sì, è scritto correttamente, ma immaginate la situazione: il prezzo "reale" dell'affare è risultato, per esempio, superiore al TP memorizzato - cosa farete allora? (e questa situazione è abbastanza reale - le requote sono frequenti nel mercato veloce, quando il prezzo salta)
 
alsu:
La scrittura è corretta, ma immaginate la situazione: il prezzo "reale" dell'affare si è rivelato essere, per esempio, superiore al TP memorizzato - cosa farete allora? (E questa situazione è abbastanza reale - le requote sono proprio frequenti nel mercato veloce, quando il prezzo salta)

Grazie per la vostra opinione.

Se il prezzo risulta essere superiore al TP memorizzato, allora il trade si aprirà con il livello minimo di takeaway, tale elaborazione è insita nell'EA.

PS A proposito, dovrò provare a mettere un divieto di apertura della posizione se il nuovo prezzo si allontana dal prezzo memorizzato a più di una certa distanza, grazie per il pensiero, vorrei poterlo verificare nel tester, solo in commercio.

Motivazione: