[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 595

 
Wanderer1000:
MetaTrader 4をインストールし、デモ口座を開設。注文の開閉を試した。古い注文を閉じて新しい注文を開くには、2本のローソク足の差が必要です」というような情報を使って、価格が上がったら売り注文を、下がったら買い注文を、ターミナル自体がトリガーするようにするには、どうしたらよいでしょうか。 。
EAを書く、かもしれない)
 
nadya:

こんばんは。質問:取引の一部を決済すると、EAが新しいチケットで新しい取引を開始するようなものです。新しい秩序のマジックは変わらないのでしょうか?


はい
 

なぜ、すべてのトレードが買いだけなのか、誰か説明してください。SELLで取引がない、SELLのif()の前のフラグインディケータがなぜか常に1になっている、なぜだ、設定にlong&shortがある。

また、なぜEAにオープンできるポジションを見逃させたのか、その理由もお聞きしたいです。入れません!

以下はそのコードです(変数の宣言は切り捨てて あります):
double upfr,dnfr=0.0;// 最後のフラクタルのレベル
int flag=0;

int start() //フラクタルの切れ目で開き、s個のキャンドル後に閉じる
{
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4) !フラクタルの切れ目で開き、s個のキャンドルが終わったら閉じる。=0)
{
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)==0)
{
upfr=0;
} }.
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)!=0)
{
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
} ←クリックすると拡大します。
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)==0)
{
dnfr=0;
}.
//OPEN ORDERS BY PROBIT
H=iHigh(Symbol(),PERIOD_H1,1);
L=iLow(Symbol(),PERIOD_H1,1);
tOpen=iTime(Symbol(),PERIOD_H1,1);
if(H>upfr &&#8252)flag==0) //フラクタルがアップし、フラクタルレベルを超えた場合
{
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,NULL,NULL);
flag=1;
}.
if(L<dnfr)
Print(L," -L dnfr- ",dnfr," flag- ",flag);
if(L<dnfr &&)flag=0)//フラクタルレベルが下がっている場合
{
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,NULL,NULL);
flag=1;
}.
// CLOSE ORDERS BY END OF TIME
if(Time[1]>=tClose && flag==1)// 指定時間が過ぎた場合
{
Print("CLOSE FUNCTION");
OrClose();
flag=0;
upfr=0;
dnfr=0;
} }.
return(0);
}.

ファイル:
 

偶然にも、こんなものを見つけてしまった...。

EAを削除する場合、保留中の注文を削除 する必要があります。

2つのバリエーションがあります。

1.ただ、すべてを削除してしまう...。

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2.選択的に...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

さて、気になるのは、デモではどちらも問題なく動作していることですが...。でも、現実には...保留中のロットが1つだけなぜか削除されている...。質問 - その理由を知っている人はいますか?

 
DOCTORS:

偶然にも、こんなものを見つけてしまった...。

EAを削除する場合、保留中の注文を削除する必要があります。

2つのバリエーションがあります。

1.ただ、すべてを削除してしまう...。

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2.選択的に...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

さて、気になるのは、デモではどちらの場合も正常に動作していることですが...。でも、現実には...保留中のロットが1つだけなぜか削除されている...。問題 - 理由は誰が知っている?

IMHO「時間がない」。

特殊関数deinit()の実行時間は 2.5秒に制限されています。特殊関数 deinit() のコードが指定時間以上実行された場合、クライアント端末は特殊関数 deinit() とプログラム全体を強制的に終了する。

 
ilunga:

IMHO 「間に合わない」。

特殊関数deinit()の実行時間は2.5秒である。特殊なdeinit()関数内のコードがこの時間より長く実行された場合、クライアント端末は特殊なdeinit()関数とプログラム全体を強制的に終了させることができる。

:(

つまり、希望はないのでしょうか?大雑把に言うと、まずスクリプトを使って未決済の注文をクローズし... そしてowlをクローズする...ナイス自動売買...

もう一つ質問ですが、アシスタントがペンダントをセットしています https://forum.mql4.com/ru/42300/page588

タイムフレームを変更すると、なぜか注文が削除されてしまうのですが・・・。

 
DOCTORS:

:(

では、希望はないのですか?大雑把に言うと、ペンダントを閉じるスクリプトから始まり...フクロウを閉じる...という流れです。ナイス自動売買...

もう一つ質問ですが、アシスタントがペンダントをセットしています https://forum.mql4.com/ru/42300/page588

タイムフレームを変更すると、なぜか注文が削除されてしまう...。

スクリプトか、EAに動作終了を命令する何らかの方法(グローバル変数 経由など)。

タイムフレームの変更 = Expert Advisorの再起動

 
ilunga:

スクリプトか、EAを終了させる他の方法(例えば、グローバル変数を通して)。

タイムフレームの変更 = Expert Advisorの再起動

変数が動作します - ありがとうございました
うーん...時間軸の変更を回避する方法はないのか?
 
フォーラムメンバーの皆様、注文の修正にご協力ください。
 
質問:ビジュアルテストモードでは、インジケータの線はテストの最後にしか描かれません。