初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 523

 
EAのEnvelopes インジケータ、EAは自分で書きました、設定でシフト(-7)を入れました。Envelopesインジケータのマイナスシフトの注文をEAが開けない のはなぜですか?
 
Vagif Babaev:
EAのEnvelopes インジケータ、EAが自分で書きました、設定でシフト(-7)を入れました。Envelopesインジケータのマイナスシフトの注文をEAが開けない のはなぜですか?
iEnvelopes では,インジケータバッファから 受け取った値のインデックスをシフトより小さくしてはならない,すなわち,最後の値を7より小さくしてはならない。
 
demonoid123000:
プログラマーの皆様へ。手伝ってくれる?Expert Advisorに未決済注文数を付けたいのですが、どうすればいいですか?役に立つかどうかはわかりません。このフクロウを何組か置いても、注文は1つしか開けない。片方のペアで注文を出すと、もう片方のペアのシグナルが無視されない。どうしたらいいのかわからない。

問題はこの状態です

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

こうすればいいのです。

//+------------------------------------------------------------------+
//|                                                    Hippo_Buy.mq4 |
//|                                                        ut_Kanada |
//|                                            albertgod1972@mail.ru |
//+------------------------------------------------------------------+
#property copyright "ut_Kanada"
#property link      "albertgod1972@mail.ru"
#property version   "1.00"
#property strict
//===================================================================+
//                          ЗАДАНЫЕ ЗНАЧЕНИЯ                         |
//===================================================================+

extern double Lot= 0.1;
extern bool Stop = true;
extern int SL = 250;
extern int TP = 500;

extern bool BU=false;        // Переменная для включения Безубытка.

extern bool Tral = true;       // Переменная для выключения трала.
extern int putr = 100;         // Включение трала при прохождении цены putr пунктов.
extern int TrailingStop = 150; // Непосредственно сам трал.

                               //*****************************************************************************************************************
//==================================================================+
//                  Переменные для программы                        |
//==================================================================+

int TekBar = -1;             // Текущий бар.
int Or;                      // Номер ордера.
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//==================================================================+

int start()
  {

//==================================================================+
//                           Индикаторы                             |
//==================================================================+

   double TA1=NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,1),Digits);

//==================================================================+
//                     Условия модификации Ордеров.                 |
//==================================================================+
   if(Tral==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL)
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point)
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+
//                    Условия перевода в Безубыток.                 |
//==================================================================+  

   if(BU==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL && OrderStopLoss()>=OrderOpenPrice())
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point && OrderStopLoss()<=OrderOpenPrice())
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+    
/*
  int q;                                             
  for(q = 1; q <= Bars; q++)
  {
   double TAq = NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,q),Digits);
   if(TAq != 0)
   {
    Comment("TAq = ",TAq);
    break;
   }
  }*/
//==================================================================+
//                    Условия и Открытие Ордеров.                   |
//==================================================================+

   if(Stop==true)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"000",0,0,Tomato);        // Продажа.               

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"000",0,0,RoyalBlue);      // Покупка.     ;

           }
        }
     }

   if(Stop==false)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"000",0,0,Tomato);        // Продажа.                

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"000",0,0,RoyalBlue);      // Покупка.     
           }
        }
     }
//----   
   return(0);
  }
//+------------------------------------------------------------------+
int Total_orders(string symbol
                 //int type
                 )
  {
   int n=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         //if(OrderType()!=type)continue;
         //if(OrderMagicNumber()!=Magic)continue;
         if(OrderSymbol()!=symbol)continue;
         n++;
        }
     }
   return(n);
  }
//+------------------------------------------------------------------+
 
angel341:
インジケータを上下にnポイント移動させるには、どのようなパラメータや関数が有効でしょうか?
Shiftパラメータを追加し、正の数は上に、負の数は下にシフトするようにしました。
ファイル:
 
Sergey Gritsay:

問題はこの状態です

このような仕組みになっています

プログラミング言語が全くわからない...要するにわからないんです。もしかしたら、これらの値を変更することができるかもしれません。
 
demonoid123000:
プログラミング言語が全く分からない・・・理解できない。もしかしたら、これらの値を変更することができるかもしれません。
では、このコードはどこで手に入れたのでしょうか?
 
Sergey Gritsay:
Shiftパラメータを追加し、正の数で上方へ、負の数で下方へオフセットできるようにした。
ありがとうございました!これからテストします!!!!
 

Sergey Gritsay:
добавил параметр Shift, положительное число смещение вверх, отрицательное вниз.

ありがとうございました。

 
Sergey Gritsay:

ってなもんです。

この機能を実行すると、注文が削除されますか?もしそれがコードの最初に呼ばれるなら、" if(TimeCurrent()>=D'23:50')close_all();return;" プログラムはそれ以上動きません、つまり注文は開かれずログには「停止ボタンが押された」と書かれています。この1行を削除すると、すべてが動作し、開くようになります。何が問題なのか説明してください。細かいことはよくわからないので、関数の本体だけ コピーしてみました。
 
toni_stark:
この機能を実行すると、注文が削除されますか?もしそれがコードの最初に呼ばれるなら、" if(TimeCurrent()>=D'23:50')close_all();return;" プログラムはそれ以上動きません、つまり注文は開かれずログには「停止ボタンが押された」と書かれています。この1行を削除すると、すべてが動作し、開くようになります。何が問題なのか説明してください。細かいことは苦手なので、関数の本体だけ コピーしています。
あなたのコードを教えてください
理由: