どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 366

 
vadynik:
価格から一定のポイント数で注文を閉じようとしているのですが、バーチャルストップを作 ろうとしています...。


なぜなら、コードでは相場を聞いて いるわけではなく、カウントしているだけなので、この行は

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

は常に真で、演算子の本体が実行されます。

 
vadynik:
なぜ次のティックですぐに注文が閉じるのか、もう頭が沸騰しそうです。価格から何ピップスで注文を閉じるか、仮想ストップみたいな ものを作りたいのですが...。

値をプリントアウト する

priceopen

...

 
vadynik:
なぜ次のティックですぐに注文が閉じられるかというと、価格から一定のポイント数で注文を閉じようとしているからで、バーチャルストップのようなもので、もう頭が 沸騰しそうです...。


これは、この行で次のような計算をした場合と同じになります。

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

{

Print(100) です。

オーダークローズ(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

わかるか?)

 
Ekburg:


この行で次のような計算をした場合のようです。

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

{

Print(100) です。

オーダークローズ(OrderTicket(),OrderLots(),Bid,50,Blue) ;

}

ほらね(笑)


そう、ロジックが浮いているのです))
 
vadynik:

そう、ロジックが泳いだのです)))

そうなりますね...))) 最初は、みんなそうだったと思います...。)
 
Ekburg:

なりますね...))))最初は、誰にでもあることだと思います。)


ええ、起動が難しいです)ありがとうございました。

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

そういうことなんです。

 
MLQ4で「何らかの条件を満たした上で、手動確認を求める」という書き方を教えてください。
 
Trader7777:
MLQ4で「何らかの条件を満たした上で、手動確認を求める」という書き方を教えてください。


MessageBox関数は、メッセージボックスの作成と表示、およびその制御を行う関数です。
 

ありがとうございます、勉強させていただきます...)
 
Trader7777:

ありがとうございます、検討させていただきます...)

//+------------------------------------------------------------------+
//|                                         проверка(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;
   }
}
//--------------------------------------------------------------------