初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 25

 
Viachaslau Baiko:

型変換によるデータ消失の可能

試してみてください。

ファイル:
 
Renat Akhtyamov:
コンパイラが指し示すコードの行を表示してください。

そういう線が多いので、新端末に合わせたモジュールをお願いしたわけです。でも、快く引き受けてくださってありがとうございます)

 
Alekseu Fedotov:
ありがとうございます!試してみます。
 
Viachaslau Baiko:

そういう線が多いので、新端末に合わせたモジュールをお願いしたわけです。でも、快く引き受けてくださってありがとうございます)

この線上で:

" 型変換による データ消失の可能性"

は、エラーのあるコード行の行番号と位置である必要があります。

このように、コードの正確な位置を知ることで、すべてのエラーを簡単に修正することができます。

 
Renat Akhtyamov:

この行の右側に

" 型変換による データ消失の可能性"

には、行番号とエラーのあるコード行の位置があるはずです。

それは、コード内の正確な位置を知ることで、すべてのエラーを簡単に修正することができるのです。

アレクセウ・フェドトフ氏が 提供するExpert Advisorを、私のニーズに合わせて改造してみました。

私の要望は以下の通りです。ワンドのクロスオーバーでポジションをオープンし、反対のクロスオーバーでクローズします。可能であれば、ブレークイーブンにポジションを移します。

しかし、結局は何も開かれない。頭を悩ませているところです。何が問題なのでしょうか?

ファイル:
4Tester.mq4  20 kb
 
Viachaslau Baiko:

Alekseu Fedotovが 提供するEAを参考に、自分のニーズに合わせて修正してみました。

私の要望は以下の通りです。クロスしたらポジションをオープンし、再びクロスしたらクローズする。可能であれば、ブレークイーブンにポジションを移します。

しかし、結局は何も開かれない。頭を悩ませているところです。何が問題なのでしょうか?

CMMからエラーが出ているコードの行を見てみたいのですが。
 
Renat Akhtyamov:
CMMからのエラーとコードの行を表示し、私は助けるために提供する最後の時間。
私のほうにミスがありました。プログラムのロジックを間違えてしまったのです。やり直しもしやすかったですしね。CMMのコードに間違いはない。
 
mql4またはmql5で以下のことが可能かどうか、アドバイスをお願いします。

価格が垂直レベルを超えた後、写真のように背景の一部を別の色にする。

ありがとうございます。
ファイル:
Immagine1.JPG  100 kb
 
Renat Akhtyamov:
EAでインジケータからどのようにシグナルを読み取るか、コードスニペットを表示する。
extern int     stoploss             = 200,
               takeprofit           = 400,
               slippage             = 10,
               Magic                = 777;          

extern double  Lot                  = 0.5,
               buy_level            = 15;      
            

void OnTick()
{
   for (int i=0; i<OrdersTotal(); i++)                        
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
  
   double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
   double SL=0,TP=0;
  
   if (STO > buy_level)
  
  
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits);
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*  Point,Digits);    
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
      PlaySound("timeout.wav");
      Print("Ордер успешно размещен");
}
}
 
TimBerg:
extern int     stoploss             = 200,
               takeprofit           = 400,
               slippage             = 10,
               Magic                = 777;          

extern double  Lot                  = 0.5,
               buy_level            = 15;      
            

void OnTick()
{
   for (int i=0; i<OrdersTotal(); i++)                        
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
  
   double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
   double SL=0,TP=0;
  
   if (STO > buy_level)
  
  
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits);
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*  Point,Digits);    
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
      PlaySound("timeout.wav");
      Print("Ордер успешно размещен");
}
}

ここです。

iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);

期間(タイムフレーム)を 1,5,15,30,60,240,1440,10080,43200 //M1.M5.M30 ... に変更する。など

を入力するか、15 の代わりにPeriod() を入力すると、手動で TF を切り替えたときに、現在の TF が自動的に設定されます。