定期的に株式を固定する方法

330に達したときに定期的に株式を固定する方法(例:最初の株式300)を停止し、来週続行します。来週再び363ストップ広告の継続に達したとき、330で再開してください。

私は試してみました:

double Eq = AccountEquity();

if(AccountProfit()> = Eq (0.1 * Eq)){
for(int l = OrdersTotal(); l> = 0; l – ){
OrderSelect(l、SELECT_BY_POS);
deleteOrder();
deletePending();
if(TotalOrders()> 0)
deleteOrder();
deletePending();
Eq = AccountEquity();
スリープ(DayOfWeek()== 0);
(0)を返します。

その他

しかし何も起こらなかった。

助けてください、ありがとう


必ずStart()関数が実行されるたびに更新されないようにEqを宣言(および値を代入)してください。

このようにしてみてください:

グローバル変数宣言領域内、つまりStart()内にはない

二重Eq = -1。

それからIN Start()

if(Eq == -1)Eq = AccountEquity(); //この方法ではStart()が最初に実行されたときにのみ更新されます

あなたがEAの "休止"時間の間スリープを使うのは良い考えではありません。あなたが新しい週の初めまでどれくらいの時間があるか分からず、そしてSleep()はあなたが設定した特定の秒数の間すべての取引を止めるでしょうの中に ()

むしろこれを試してください:

グローバル変数領域で:

bool Dormant = true;

それからStart()関数で:

if(休眠== true)

{

純資産があなたが望むこの値に達するまであなたの取 を入力してください

それからあなたの公平が価値に達するとき

休止=偽。

}

それ以外の

{

//すべての取引を削除します

(int i = OrdersTotal()、i> = 0; i–)

{
OrderSelect(l、SELECT_BY_POS、MODE_TRADES);
if(OrderType()== OP_BUY)

{

if(OrderClose(OrderTicket()、OrderLots()、Ask、30、Blue)== false)Print( "チケットのOrderClose" OrderTicket() "エラーで失敗しました GetLastError());

}

if(OrderType()== OP_SELL)

{

if(OrderClose(OrderTicket()、OrderLots()、Bid、30、Red)== false)Print( "チケットのOrderClose" OrderTicket() "エラーで失敗しました GetLastE rror());

}

if((OrderType()== OP_SELLLIMIT)||(OrderType()== OP_SELLSTOP)||(OrderType()== OP_BUYLIMIT)||(OrderType()== OP_BUYSTOP))

{

if(OrderDelete(OrderTicket())== false)Print( "保留中の注文の削除がエラーで失敗しました" GetLastError());

}

}

}

私はコードをテストしませんでした(ただカフからそれを書いただけです)。私はちょうどそれを行う方法のいくつかのアイデアを見せようとしました。

がんばろう

誰も気にしない


ありがとう、私は今それを試します。 (^ o ^)


"double Eq = -1;"で試しました。グローバル変数と "start"内のコード

if(Eq == -1)Eq = AccountEquity 福;
if(AccountEquity()> = Eq (0.1 * Eq)){//エクイティの10%
for(int l = OrdersTotal(); l> = 0; l – ){
OrderSelect(l、SELECT_BY_POS);
deleteOrder();
deletePending();
if(TotalOrders()> 0)
deleteOrder();
deletePending();
スリープ(86400000)。 //例1日寝たい
(0)を返します。

その他

しかし、結果は、EAに到達したときに330に達し、再び取引されないことです。何か問題がありますか。なぜそれが新しい株式との取引を継続できず(330)、363で停止することができないのかなど。

助けてください、ありがとう


サイクルが再開できるように、タイムアウト期間の後にEqの値をリセットする必要があります。

この例では、 帯跛辮関数の後に次のものを追加します。

Eq = AccountEquity();

それが役立つことを願います

誰も気にしない


それは今動作します、ありがとうございました、あなたは最高です。




4873: https://www.mql5.com/en/forum/123091


Originally posted 2019-08-04 02:45:28.

Translate »