コーディングのヘルプが必要 - ページ 8

 

ジョ

このようなものです。

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
こんにちは。

インジケータでアラートを出すにはどうしたらいいですか?

例えば、MACD[0]>MACD[1]の時にどのようにアラートするのですか?

助けてくれてありがとうございます。

ジョウ
 
mladen:
ジョ

このようなものです。

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

ありがとうムラデン、でもどこに?

私はメッセージを持っていた。

赤色 -If_function not defined

Red-Alert_Semicolonが予想されます。

------------------------------------------------------------------------------------------------------------------

#プロパティindicator_separate_window

#property indicator_buffers 2 (インジケータバッファ2)

#property indicator_color1 シルバー

#property indicator_color2 レッド

#property indicator_width1 2 (プロパティ インジケータ幅1)

//---- インジケーターのパラメーター

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- インジケータ・バッファ

double MacdBuffer[];

double SignalBuffer[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- 描画設定

SetIndexStyle(0,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(1,DRAW_LINE)を設定します。

SetIndexDrawBegin(1,SignalSMA)を設定します。

インジケータDigits(Digits+1);

//---- インジケータ・バッファのマッピング

SetIndexBuffer(0,MacdBuffer)を設定します。

SetIndexBuffer(1,SignalBuffer)を設定します。

//---- データウィンドウとインジケータサブウィンドウのラベルの名前

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")").を設定します。

SetIndexLabel(0, "MACD")を設定します。

SetIndexLabel(1, "Signal");

//---- 初期化完了

return(0);

}

//+------------------------------------------------------------------+

//| 移動平均の収束・発散について

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- 1stバッファでカウントされたmacd

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i) とします。

//---- 2番目のバッファでカウントされる信号線

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//----完了

return(0);

}

//+--------------------------------------------

 

あなたのコードの最後のリターンの直前(そうすることで、残りのすべての処理が終了したときにのみ実行されることを保証する)。

Jovager:
ありがとうMladen、でもどこに?

というメッセージが表示されました。

赤色 -If_function 未定義

赤色-アラート_セミコロンが予想されます。

------------------------------------------------------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2 (インジケータバッファ2)

#property indicator_color1 シルバー

#property indicator_color2 レッド

#property indicator_width1 2 (プロパティ インジケータ幅1)

//---- インジケーターのパラメーター

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- インジケータ・バッファ

double MacdBuffer[];

double SignalBuffer[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- 描画設定

SetIndexStyle(0,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(1,DRAW_LINE)を設定します。

SetIndexDrawBegin(1,SignalSMA)を設定します。

インジケータDigits(Digits+1);

//---- インジケータ・バッファのマッピング

SetIndexBuffer(0,MacdBuffer)を設定します。

SetIndexBuffer(1,SignalBuffer)を設定します。

//---- データウィンドウとインジケータサブウィンドウのラベルの名前

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")").を設定します。

SetIndexLabel(0, "MACD")を設定します。

SetIndexLabel(1, "Signal");

//---- 初期化完了

return(0);

}

//+------------------------------------------------------------------+

//| 移動平均の収束・発散について

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- 1stバッファでカウントされたmacd

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i) とします。

//---- 2番目のバッファでカウントされる信号線

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//----完了

return(0);

}

//+--------------------------------------------
 

Pls fix Zero divide error when using timeframe as "0" (タイムフレームを "0 "として使用した場合のゼロ除算エラー

pivot_crazy.mq4Could someone please fix the zero divide error when using the timeframe as "0".

ありがとうございます。

ファイル:
 

お試しください。現在、修正されています

privateer:
pivot_crazy.mq4Could someone please fix the zero divide error when using the timeframe as "0" Thanks.
ファイル:
 

ありがとうmladenは魅力的です

mladen:
試してみてください。現在、修正されています

thank u mladen works like a charm

 

私はこのEAで助けが必要です そのマーチンゲール関数を持っていますが、例えば、その位置が損失で閉じている場合マーチンゲール関数は損失で閉じた最後の位置のロットを掛ける必要がありますが、そのコードでエラーが発生し、マーチンゲールはここで正常に動作します そのeauniversalmacrossea.mq4

ファイル:
 

損失が出た後に新しい注文を出す方法はマーチンゲールではありません + マーチンゲールはオープンポジションで機能します

blondutrader:
このEAにはマーチンゲール機能がありますが、うまく機能しません。例えば、あるポジションが損失で閉じられた場合、マーチンゲール機能は損失で閉じられた最後のポジションのロットを掛けるはずですが、マーチンゲールをうまく機能させるコードにエラーがあります eauniversalmacrossea.mq4は、こちらです。
 

私は私のお金のすべての貿易f.e.5%とトレーダーにしたいとき、どのように私は、私のロットサイズを計算することができます?

 

sunshineh

この関数を 使用してみてください。

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
どのように私は私のロットサイズを計算することができます、私はすべての貿易とトレーダーしたいときに、私のお金の5%、例えば?