コーディングの方法は? - ページ 197

 

このEAをコーディングするのを手伝ってくれる人はいますか?

こんにちは。

私は現在、最大4レベルの注文を出すマーチンゲールEAで取引しています。私は、このEAを使用するリスクを減らすことができるかもしれないヘッジ戦略をちょうど考えています。以下は、私の戦略の説明です。

1.ヘッジEAは、新規注文のドローダウンを監視します。1.ヘッジEAは、新規注文のドローダウンを監視し、浮動損失の合計が事前に設定した金額より大きい場合、新規注文と反対のヘッジ注文をオープンするようEAをトリガーします。

2.2. ヘッジ注文のロットサイズは、最後の新規注文のロットサイズの倍数(ユーザーが設定可能)に基づいて計算されます(例:最後のレベル注文のロットサイズが1.6で倍数が2に設定されている場合、ヘッジ注文はロットサイズが3.2で開かれます。

3.3. ヘッジされた注文がその始値のレベルに戻ると、ヘッジされた注文は自動的に決済されます。

4.4. バスケット全体(始値注文+ヘッジ注文)があらかじめ設定された純利益額に達すると、すべての注文がクローズされます。

誰か優秀なプログラマーがこのヘッジEAをコーディングしてくれないだろうか。私はそれが同様に他のマーチンゲールEAに非常に有用であろうと思います。どうもありがとうございます。

よろしくお願いします。

ウォレス

 

おいおい...

ありがとう、みんな

買いストップと売りストップは どうですか?

BUY "の部分を変更するだけでいいのですか?

ただ、1つのペアで2つのポジションが欲しいだけです。

すみません、まだ初心者で...

 

どのようにEAにこのindisをコード化する?

こんにちは、私は新しい学習者とmqlを学ぶために興味を持っています、誰かがEAにこれをコード化する方法を教えてもらえますか?

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

extern int Signal.period = 5;

//---- バッファ

double Buffer1[],

Buffer2[],

b2[],

b3[];

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

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

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

int init()

{

//---- インジケータ

// カウントに使用する2つの追加バッファ

IndicatorBuffers(4);

IndicatorShortName("MA_5_34");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(0,242); // 下方向 226 234 242

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

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3) を設定します。

SetIndexArrow(1,241); //上 225 233 241

SetIndexBuffer(1,b3);

// これらのバッファはプロットされず、単に矢印を決定するために使用されます。

SetIndexBuffer (2,Buffer1).SetIndexBuffer(2,Buffer1);。

SetIndexBuffer (3,Buffer2)。

//----

return(0);

}

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

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

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

int deinit()

{

//----

return(0);

}

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

//| カスタムインジケーターイテレーション関数

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

int start()

{

int i, counted_bars=IndicatorCounted();

double MA5,MA34;

int limit=Bars-counted_bars;

Print(" print limit = ", limit);

if(counted_bars>0) limit++; <---誰か、この意味を説明してくれませんか?

// メインライン

for(i=0; i<limit; i++) <----- どういうことか説明してくれませんか?

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Buffer1=MA5-MA34。

}

// シグナルライン

for(i=0; i<limit; i++) <------can だれかが私にそれがどういう意味であるか説明する?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。

} <---誰かこの意味を説明してくれませんか?

// 矢印

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = High+10*Point;

if(Buffer1 Buffer2)

b3 = Low-10*Point; <---誰かこの意味を説明してください。

}

//----

return(0);

}

みんなありがとう =^_^=

 
liew_stanley:
if(counted_bars>0) limit++; <----can someone explain to me what it means ?

// メインライン

for(i=0; i<limit; i++) <----can someone explain to me what it means ?

// シグナルライン

for(i=0; i<limit; i++) <----can someone explain to me what it means ?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <---誰かこの意味を説明してくれませんか?

// 矢印

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = High+10*Point;

if(Buffer1 Buffer2)

b3 = Low-10*Point; <---どなたか、この意味を説明していただけませんか?

みんなありがとう =^_^=

簡単なことです。

indiを起動したとき、Bars=1000(例)、counted_bars=0です。つまり、limit=1000で、indiは1000本すべてのバーを計算します。この後、counted_bars=1000となり、新しいティックごとにindiは最後の(ゼロ)バーのみを計算する。次のバーが来たら、limit=1 とし、indiは最後の2本のバーを再計算する。

b3 = Low-10*Point; - これは、バーの最小値より10ポイント低いだけの線です。

 
liew_stanley:
こんにちは、私は新しい学習者とmqlを学ぶことに興味があります、誰かがEAにこれをコード化する方法を教えてもらえますか?

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

extern int Signal.period = 5;

//---- バッファ

double Buffer1[],

Buffer2[],

b2[],

b3[];

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

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

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

int init()

{

//---- インジケータ

// カウントに使用する2つの追加バッファ

IndicatorBuffers(4);

IndicatorShortName("MA_5_34");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(0,242); // 下方向 226 234 242

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

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3) を設定します。

SetIndexArrow(1,241); //上 225 233 241

SetIndexBuffer(1,b3);

// これらのバッファはプロットされず、単に矢印を決定するために使用されます。

SetIndexBuffer (2,Buffer1).SetIndexBuffer(2,Buffer1);。

SetIndexBuffer (3,Buffer2)。

//----

return(0);

}

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

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

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

int deinit()

{

//----

return(0);

}

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

//| カスタムインジケーターイテレーション関数

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

int start()

{

int i, counted_bars=IndicatorCounted();

double MA5,MA34;

int limit=Bars-counted_bars;

Print(" print limit = ", limit);

if(counted_bars>0) limit++; <---誰か、この意味を説明してくれませんか?

// メインライン

for(i=0; i<limit; i++) <-----誰かこれが何を意味するのか説明してくれませんか?

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Buffer1=MA5-MA34。

}

// シグナルライン

for(i=0; i<limit; i++) <----can someone explain to me what it means ?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。

} <---誰かこの意味を説明してくれませんか?

// 矢印

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = High+10*Point;

if(Buffer1 Buffer2)

b3 = Low-10*Point; <---誰かこの意味を説明してください。

}

//----

return(0);

}

みんなありがとう =^_^=

このインジケータをEAで使用したい場合は、icustom()関数を使って アクセスすることができます。少なくとも、これが簡単な方法です。

 
fxcourt:
このインディケータをEAで使用したい場合、icustom()関数を使用してアクセスすることができます。少なくとも、これが簡単な方法です。

つまり、EAでicustom()という関数を使って indisを呼び出すということですか? EAでどのようにコーディングすればよいのでしょうか?

ありがとうございます。

 
toiii:
おっと...

ありがとうございます。

買いストップ、売りストップはどうですか?

BUY "を変更するだけでいいのですか?

ただ、1つのペアで2つのポジションが欲しいだけなのですが、それ以上は無理です。

すみません、まだ初心者で...

これを読む

MQL4チュートリアル

 

このコーディングは正しいですか?

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

extern int ShortEma = 5;

extern int LongEma = 34;

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

//| エキスパート初期化関数

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

int init()

{

//----

//----

return(0);

}

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

//| エキスパート初期化関数

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

int deinit()

{

//----

//----

return(0);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

if(line1>line2)current_direction = 1; //上方向

if(line1<line2)current_direction=2;//下方向

if(current_direction != last_direction) //変更されました。

{

last_direction = current_direction;

return (last_direction);

}

それ以外

{

return (0);

}

}

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

//| エキスパートスタート機能

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

int start()

{

//----

int total;

double shortEma, longEma;

shortEma = iCustom(NULL,0, "Test_Demo",13,0,0); longEma = iCustom(NULL,0, "Test_Demo",54,0,0);

longEma = iCustom(NULL,0, "Test_Demo",54,0,0); longEma = iCustom(NULL,0, "Test_Demo",54,0,0);

Print("shortEma = " + shortEma + " : longEma = " + longEma);

int isCrossed = 0;

isCrossed = Crossed (LongEma,ShortEma);

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,「私のEA」,12345,0,Green);

if(1>0)

{

if(オーダーセレクト(1,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());

else Print("BUY注文の開始エラー :",GetLastError())。

return(0);

}

if(isCrossed == 2)

{

2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "私のEA",12345,0,Red).を送信します。

if(2>0)

{

if(オーダーセレクト(2,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());

else Print("SELL注文の開始エラー :",GetLastError());

return(0);

return(0);

}

}

1と2が予期しないトークンであるというエラーが発生しました。

ありがとうございます。

 

何か削除して忘れたんだろう。

2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red); if(2>0)

無意味なことだ

 
liew_stanley:
extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

私は1&2予期しないトークンというエラーを持っている、それは何を意味するのでしょうか? 私を導くことができますか?

ありがとうございます

OrderSend(...)の前に1=と2=を削除してください。