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

 

これは間違っています : if(totalOrders==0 && Magic==OrderMagicNumber() &&)

OrderSelect(i-1 , SELECT_BY_POS,MODE_HISTORY)==true)

というのは、OrderSelect() の前に OrderMagicNumber() を呼び出しているので、おそらく前の呼び出しを参照しているのでしょう。

 
EBK:
あ、すみません、私の意見が間違っていました。

資本がある値を下回るとEA取引(またはEA取引の一部)を停止するようなコードを書きたい(でもできない)のですが、どうしたらいいですか?

Roger09さん、ありがとうございました。でも、チャート上に自己資本を表示する必要はありません。

以下のEAを試してみてください。

CloseAllBuySell - MQL4コードベース

そのアイデアを使って、次のようなコードを作ってみてください。

if (AccountEquity()<YourValue) closeallorders();

 

どなたか、サンプルのMoving Average EAにEMA trailing stopを追加していただけませんか?

EMAのトレーリングを1に設定

そして、エントリーを次のように変更してください。

買い=Open[1]>ma && Close[1]>ma。

売り=Open[1]<ma && Close[1]<maとします。

これで、非常に優れたシンプルなスキャルパーになるはずです。

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

ベノ

ファイル:
 
 

プログラム冒頭に追加

extern int pips=2;//(or your number of pips)

と置き換えます。

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() ;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() ;[/CODE]

to

[CODE]if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;
 

どなたか、このインジケーターに新しい矢印を引いたときのアラートを入れるのを手伝っていただけませんか?

ありがとうございます。

ファイル:
hilow3.mq4  2 kb
 

いいえ、修正してください

extern int pips=2;

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

//| スクリプトプログラム開始関数

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

int start()

{

//----

文字列 curr = Symbol();

int ot = OrdersTotal();

int ords[200]、ordType[200]、ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

if ((OrderType() == OP_BUY))|| (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

if (sl != 0+10)

注文変更(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

 

OK、コードは今、次のようになります。

extern int pips=10;//

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

//| スクリプトプログラム開始関数

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

int start()

{

//----

文字列 curr = Symbol();

int ot = OrdersTotal();

int ords[200]、ordType[200]、ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

if ((OrderType() == OP_BUY))|| (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

if (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

}

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

 

Roger09さん、こんにちは。

このコードについてのヘルプに感謝します。私のスクリプトコードは現在以下のようになります(この返信のためだけに赤で示した変更を加えました、MQ4のコードはそこにあった残りのコードと同じように見えます)。

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

//| スクリプトプログラム開始機能

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

int start()

{

//----

extern int pips=2;//

string curr = Symbol();

int ot = OrdersTotal();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

if ((OrderType() == OP_BUY))|| (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

if (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0)です。

私がそれを正しく持っている場合、あなたは私に知らせることができますか?私はここで盲目的に飛んでいるので、私に我慢してください。

 

実際、それは動作するでしょうが、このコードは良くありません。残念ながら、私はあなたの主な目標を知らないので、他のものを推薦することはできません。