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

 
DhP:
Il MagicNumber non cambia in questo caso, a meno che non sia fornito dal codice EA.

Grazie a tutti!
 
Roman.:


Soluzione:

Per comprare (vendere - per analogia):

1. Frattura MA - ottenere i valori MA sulle barre 3, 2 e 1 - confrontare. Se i valori MA sulle barre 3>2 e 2<1, è una rottura.

2. poi - frattale - penetrazione - un segnale per fare un accordo

Per quanto riguarda l'enumerazione di MA - mettetela in variabili esterne (ottimizzabili):

Period_MA (si può impostare da 2 a 240 con il passo 2), MODE - (metodo di calcolo di MA - gamma di cambiamenti da 0 a 3 passo 1), PRICE_TYPE - (costante di prezzo - gamma di cambiamenti da 0 a 6 passo 1), ho sentito che quando si lavora all'interno del giorno MA contare sui valori medi (prezzo di chiusura non è importante), quando si lavora sulle candele giorno MA contare sui prezzi di chiusura dei giorni.

PERIODO - lo si cambia manualmente ad ogni ottimizzazione successiva - 1,5,15,30,60,240...

Premi F1 sull'iMA - leggi attentamente tutto di nuovo.

E naturalmente ottimizzare TP e Stop Loss come al solito.

P.S. Non dimenticare di scrivere un'informazione sui risultati del test... :-)))

I risultati dei test per TF=1 min non hanno prodotto varianti redditizie, anche se ottimizziamo l'EA una volta al giorno.
 
DhP:
Quando una posizione è parzialmente chiusa, è possibile cambiare il magik. Sono sicuro che puoi scriverlo facilmente.

Probabilmente hai delle conoscenze che non sono disponibili alla mql-community o semplicemente non capisci la domanda o ti illudi ingenuamente che la funzione OrderClose cambi la magia.

 
gince:

Ho capito che non ho un'impostazione iniziale di flag[i+1] . Se sì, dove e come posso farlo?

Se imposto 1, allora quando avvio l'indicatore, esso (l'indicatore) aspetterà il cambiamento.

Il modo corretto di farlo è questo:

if ((flag[i]==1 || flag[i]==0) && условие продажи)
con la condizione che flag non inizializzato =0 (o prendere EMPTY_VALUE....)
 
sergeev:

la cosa giusta da fare è questa:

Con la condizione che flag non inizializzato =0 (o prendere EMPTY_VALUE....)

Grazie a tutti. Ho fatto quello che volevo fare.

 
volshebnik:
I risultati dei test su TF=1 min non hanno prodotto opzioni redditizie, anche se si ottimizza l'EA una volta al giorno.

Piùbasso è il TF, più alto è il rumore...
 
Roman.:

Piùbasso è il TF, più alto è il rumore...
Sì, ma se la strategia è corretta, dovrebbe, mi sembra, funzionare su qualsiasi TF, solo con parametri diversi. Anche il risultato dei test su TF=5 min non ha dato opzioni redditizie.
 
volshebnik:
Sì, ma se la strategia è corretta, dovrebbe, mi sembra, funzionare su qualsiasi TF, solo con parametri diversi. Anche il risultato dei test su TF=5 min non ha dato alcuna opzione redditizia.

La strategia è corretta. Ora sono ubriaco. Mi sto riposando.
 
sergeev:

hai ancora un errore nel tuo codice.

Ricorda: gli stop e i takeover negli ordini in sospeso non sono basati sul prezzo corrente ma sul prezzo di apertura dell'ordine.



Un ringraziamento speciale e rispetto per voi :)))))

Errori corretti (si spera tutti ora :)) ) + limitatori aggiunti. Sarà molto utile per coloro che hanno davvero bisogno di assegnare il numero Magic agli ordini effettuati.

Buon divertimento!

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

C'è una vera strangia lì. In questo momento sono su di giri come un aquilone. Mi sto riposando.
Lo stesso su TF = 15 min. Non vedo ancora nessuna "fedeltà" in questa strategia, potrebbe ancora mostrarsi in anticipo. (Buon riposo))