MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 492

 
Ihor Herasko:

SymbolSelect 機能を参照してください。

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

 
プログラム的にグラフをもっと左に移動させる方法を教えてください。
 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4初心者のための質問、アルゴリズムやコードに関するヘルプとディスカッション

ラブビック 2018.03.12 14:43

こんにちは、私はこのような問題に直面しています。

ストップロス、テイクプロフィットなしでトレードを開始します。

OrderSend("EURUSD",OP_BUY,0.1,Ask,0,0,0,"",Magic,0,Red);

この注文を終了したい。

OrderClose(Magic,OrderOpenPrice(),Ask,0,Red);

次のエラーが発生しました:OrderClose error 131

OrderOpenPrice() の代わりに 0.1 または OrderLots() を指定した場合、OrderClose error 138 というエラーが発生します。

何が問題なのか?

ドキュメントから判断すると、もっと奇抜なクローズを書くのは非常に難しい。

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
チケットの代わりにマジックを、ボリュームの代わりにオープンプライスを書きました。ドキュメントを読んで、コードを書くときにもっとよく調べてみてください。


 
Nikolay Gaylis:
プログラム的にチャートをさらに左に移動させる方法をアドバイスしてください。

自動スクロールとオフセット(それぞれチャートプロパティCHART_AUTOSCROLLとCHART_SHIFT)を無効にしてから、ChartNavigate() を使用する必要があります。

 
Ihor Herasko:

自動スクロールとオフセットを無効にしてから、ChartNavigate() を使用する必要があります (それぞれチャート・プロパティ CHART_AUTOSCROLL と CHART_SHIFT).

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

 

皆さん、こんにちは!EAを作 ろうとしている初心者です。どんな風になるのか、簡単なものを書いてみました。信号が表示されても、アラートが動作しない。何がエラーなのかわかりません。具体的にどのようなエラーなのかはわかりません。

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 double tenkan=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun=iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
  if(tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
  Alert("ЗОЛОТОЙ КРЕСТ");                                       // ОПОВЕЩЕНИЕ
  return;
  }

敬具 アンドレイ

ファイル:
 
Andrey Ilinykh:

皆さん、こんにちは!EAを作 ろうとしている初心者です。どんな風になるのか、簡単なものを書いてみました。信号が表示されても、アラートが動作しない。何がエラーなのかわかりません。具体的にどのようなエラーなのかはわかりません。

アンドリュー

動くのか!テスターで確認するのか?

 
Nikolay Gaylis:

動作しています!テスターで確認していますか?

そう思っていたんです、なぜか。

いや、まだテスターがわかっていないんです。

Expert Advisorをコンパイルして、分足チャートで使っています。雲の色は変わりますが、警告ウィンドウは開きません。ソフトウェアのエラーではないでしょうか?

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

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal();
   datetime mDateOrderOp; 
   
   
   for(int i=k-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
         {
            if(OrderType()== OP_BUYSTOP || OrderType()== OP_SELLSTOP) 
            {
               mDateOrderOp = OrderOpenTime();
               int  mTick = OrderTicket();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false;
               for(int pos=k-1;pos>=0;pos--)
               {
                  if (OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
                  {
                     if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
                     {
                        if(OrderOpenTime() == mDateOrderOp && (OrderType()== OP_BUY || OrderType()== OP_SELL)  ) 
                        {
                            flag = true;   
                            break;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                  if (!OrderDelete(mTick))
                  Print("Ошибка delete ордера . Код ошибки=",GetLastError()); 
                  break;
               }
             } 
         }
      }
   }
}
あるTPとODで注文を出したのですが、ODが発動し、最初の注文のOD価格で反対方向の2番目の注文が開きました(ODは最初の注文で失ったポイント数に等しいです)。二次SLの場合、三次注文は、二次注文のSLの値(すなわち対応するTP)と同じ価格で、二次注文と反対方向に建てる必要があります。質問:この3つの注文を開くというカスケードを作るにはどうしたらいいのでしょうか?
 
シンボル上でEAが開いた注文を全て決済する機能は正しいかどうか教えてください。
void OrderCloseAll(double close_price)
{
   for(int i=OrdersTotal(); i>-1; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) OrderClose(OrderTicket(),lot,close_price,slippage,clrWhite);
      }

}