Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 366

 
vadynik:
J'essaie de fermer mon ordre à un certain nombre de points du prix, j'essaie de faire un arrêt virtuel...


Parce que dans le code, vous ne demandez pas les cotations du marché, vous ne faites que compter, donc la ligne :

((NormalizeDouble(priceopen,Digits) >=(NormalizeDouble(priceopen,Digits)-30*Point))||(NormalizeDouble(priceopen,Digits) <=(NormalizeDouble(priceopen,Digits) + 25*Point)))

est toujours vrai et le corps de l'opérateur sera exécuté.

 
vadynik:
Pourquoi un ordre se ferme immédiatement au prochain tick, ma tête est déjà en train de bouillir, j'essaie de faire en sorte qu'un ordre se ferme à un certain nombre de pips du prix, comme un stop virtuel....

Imprimez la valeur

priceopen

...

 
vadynik:
Pourquoi l'ordre est fermé immédiatement au prochain tick, ma tête est déjà en ébullition parce que j'essaie de le fermer par un certain nombre de points du prix, une sorte de stop virtuel...


Ce serait la même chose que si vous faisiez le calcul suivant sur cette ligne :

si ((100 >=100-30)||(100 <=100 + 25))

{

Imprimer(100) ;

OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

Vous voyez ce que je veux dire ?)

 
Ekburg:


C'est comme si vous faisiez le calcul suivant sur cette ligne :

si ((100 >=100-30)||(100 <=100 + 25))

{

Imprimer(100) ;

OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

Vous voyez ce que je veux dire ?)


Oui, la logique est flottante))
 
vadynik:

Oui, la logique nage)))

Ça viendra...))) Au début, je pense que tout le monde l'a fait...))
 
Ekburg:

Il sera... )))) au début, je pense que tout le monde l'a eu))))


Oui, c'est difficile de démarrer. Merci pour votre aide.

NormalizeDouble(priceopen-30*Point,Digits)>=Bid

C'est comme ça que ça marche.

 
pouvez-vous me dire comment écrire "certaines conditions, puis demander une confirmation manuelle" sur le MLQ4 ?
 
Trader7777:
pouvez-vous me dire comment écrire "certaines conditions, puis demander une confirmation manuelle" sur le MLQ4 ?


La fonction MessageBox crée et affiche une boîte de message et la contrôle.
 
 
Trader7777:

Merci, nous allons nous pencher sur la question...)

exemple

//+------------------------------------------------------------------+
//|                                         проверка(MessageBox).mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern int     stoploss    = 0,        //уровень выставления SL, если 0, то SL не выставляется
               takeprofit  = 0,        //уровень выставления TP, если 0, то TP не выставляется
               Magic       = 0;        //уникальный номер ордера
extern double  Lot         = 0.01;      //объем ордера
extern int     slippage    = 0;        //Максимально допустимое отклонение цены для рыночных ордеров

double SL,TP;
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
    if (MessageBox (" открыть ордер BUY??? ","Скрипт интересуется:",1)==1)
        {
      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");
        } 

//----
   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,"BUY",Magic,0,Blue);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
      if (error==-1) //неудачная покупка OK
      {  
         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;
   }
}
//--------------------------------------------------------------------