Un conseiller qui suivrait le taux sur un graphique de cinq minutes avec les conditions après le lancement : - page 7

 
int start()
{
if(OrdersTotal() !=0) return ;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //The price has dropped more than Delta points
........


 
zhuki:
si(OrdersTotal ()!=0) retour ;

Qu'en est-il des commandes d'autres personnes (utilisant d'autres symboles et magiciens) ? Dans le testeur, cela fonctionnera, mais s'il y a autre chose sur le compte que cette EA, la manière correcte est la suivante

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

La fonction retournera false s'il n'y a pas de position ouverte par le symbole courant avec le magicien spécifié (qui lui est passé).

 
Vous allez induire le gars en erreur, et il ne peut pas lire les descriptions.
Imaginez à quel point il sera confus, c'est pourquoi je l'ai écrit de manière à ce qu'il le comprenne mieux.
 
Très bien, je commence à avoir le coup de main :))
Les deux cas ont été rattrapés, merci beaucoup.
 
Seulement avec Expert Advisor je ne comprends toujours pas comment la fonction Delta fonctionne
Les transactions ne sont pas déclenchées dans mes conditions
Delta=30
Cela signifie que je veux que mon Expert Advisor ouvre une position +-30 en pips. Mais il s'ouvre à 5-10 pips à la hausse et à la baisse, ce n'est pas clair.....
 
La fonction Delta ne sait vraiment pas comment elle fonctionne :(
Peut-être y a-t-il d'autres solutions simples ?
J'ai trouvé une fonction
Distance=30 // Distance entre le prix actuel et le prix de l'ordre en attente
Peut-on l'implémenter non seulement pour les ordres en attente ?
L'idée est la même : suivez la barre actuelle, son prix ouvert et si, pendant une barre de 5 minutes, son prix augmente ou diminue de, disons, 30 pips par rapport au marché ouvert de cette barre de 5 minutes, alors seulement ouvrez une position.......
Ma stratégie ne fonctionne pas avec les ordres en attente.....

 

Et vous posteriez votre code entier ici. Et voir pourquoi Delta ne fonctionne pas...

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Voici l'ensemble du code.....
 

Oui, en effet. Delta.... ne fonctionne pas

Apparemment, ici il est nécessaire avec les signes (polarité) d'un Delta pour comprendre à l'achat et à la vente, "pour" dans le code ci-dessus, par exemple, à l'achat la valeur(iOpen(NULL,0,0)-Ask all time sera négative. Et la transaction est ouverte au prix d'ouverture de la barre (iOpen(NULL,0,0)-Ask>=Delta...

Si vous essayez de cette façon (acheter) -

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
c'est-à-dire que nous devrons éventuellement tester cette variante :

int start()
{
if(OrdersTotal()!=0) return ; //Suivre une seule transaction.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //The price fell by less or = Delta points
//Null-tek instrument, 0-tek.chart, 0-tracking tek bar
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber,11111,Green) ;

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Le prix a augmenté de plus ou = points Delta
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green) ;
}
//----
return(0) ;
}
Est-ce que je devine correctement ou ai-je confondu Ask et Bid dans les lignes :
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов