[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 71

 
DhP:
Le MagicNumber ne change pas dans ce cas, sauf s'il est fourni par le code EA.

Merci à tous !
 
Roman.:


Solution :

Pour acheter (vendre - par analogie) :

1. fracture MA - obtenir les valeurs MA sur les barres 3, 2 et 1 - comparer. Si les valeurs MA sur les barres 3>2 et 2<1, c'est un break.

2. ensuite - fractale - pénétration - un signal pour conclure un marché

En ce qui concerne l'énumération des MA - placez-la dans des variables externes (optimisables) :

Period_MA (vous pouvez définir de 2 à 240 avec l'étape 2), MODE - (méthode de calcul de la MA - plage de changements de 0 à 3 étape 1), PRICE_TYPE - (constante de prix - plage de changements de 0 à 6 étape 1), J'ai entendu dire que lorsque l'on travaille dans la journée la MA compte sur les valeurs moyennes (le prix de clôture n'est pas important), lorsque l'on travaille sur les bougies journalières la MA compte sur les prix de clôture des jours.

PÉRIODE - vous le modifiez manuellement à chaque optimisation ultérieure - 1,5,15,30,60,240...

Appuyez sur F1 sur l'iMA - relisez attentivement tout ce qui s'y trouve.

Et bien sûr, optimisez le TP et le Stop Loss comme d'habitude.

P.S. N'oubliez pas d'écrire une information sur les résultats des tests... :-)))

Les résultats des tests pour TF=1 min n'ont pas donné de variantes rentables, même si nous optimisons l'EA une fois par jour.
 
DhP:
Lorsqu'une position est partiellement fermée, vous pouvez changer le magik. Je suis sûr que vous pouvez facilement écrire ceci.

Vous avez probablement des connaissances qui ne sont pas à la disposition de la communauté mql, ou vous ne comprenez tout simplement pas la question, ou vous êtes naïvement convaincu que la fonction OrderClose change la magie.

 
gince:

Je comprends que je ne dispose pas d'un paramètre initial de flag[i+1] . Si oui, où et comment dois-je m'y prendre ?

Si je mets 1, alors quand je démarre l'indicateur, il (l'indicateur) attendra le changement.

La façon correcte de procéder est la suivante :

if ((flag[i]==1 || flag[i]==0) && условие продажи)
à condition que l'indicateur non initialisé =0 (ou prendre EMPTY_VALUE....)
 
sergeev:

la bonne chose à faire est la suivante :

A la condition que le drapeau non initialisé =0 (ou prendre EMPTY_VALUE....)

Merci à tous. J'ai fait ce que je voulais faire.

 
volshebnik:
Les résultats des tests sur TF=1 min n'ont pas donné d'options rentables, même si vous optimisez l'EA une fois par jour.

Plus la TF est basse, plus le bruit est élevé...
 
Roman.:

Plus la TF est basse, plus le bruit est élevé...
Oui, mais si la stratégie est correcte, elle devrait, me semble-t-il, fonctionner sur n'importe quel TF, juste avec des paramètres différents. Le résultat des tests sur TF=5 min n'a pas non plus donné d'options rentables.
 
volshebnik:
Oui, mais si la stratégie est correcte, elle devrait, me semble-t-il, fonctionner sur n'importe quel TF, juste avec des paramètres différents. Le résultat des tests sur TF=5 min n'a pas non plus donné d'options rentables.

La stratégie y est correcte. Je suis ivre maintenant. Je me repose.
 
sergeev:

vous avez toujours une erreur dans votre code.

N'oubliez pas : les Stops et les Takeovers dans les ordres en attente ne sont pas basés sur le prix actuel mais sur le prix d'ouverture de l'ordre.



Merci et respect à vous :)))))

Erreurs corrigées (j'espère qu'elles sont toutes corrigées maintenant :)) ) + ajout de limiteurs. Il sera très utile pour ceux qui ont vraiment besoin d'attribuer un numéro magique aux commandes passées.

Profitez-en !

#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.:

il y a là une véritable étrangeté. Je plane comme un cerf-volant en ce moment. Je me repose.
Idem sur TF = 15 min. Je ne vois pas encore de "fidélité" dans cette stratégie, mais elle peut encore se manifester. (Bon repos))