MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 215

 
AlGuru アドバイスをお願いします。Expert Advisorで次のローソク足で閉じるように指定するにはどうしたらいいですか?
datetime Time[] - 配列現在のチャートの各バーの開始時刻を 含む時間Time[0] - 直近のバーのオープン 時間です。OrderOpenTime() がTime[0] よりも小さい場合 - これは、注文が最後のバーで開かれたことを意味し、あなたの戦略によれば、この注文を閉じるべき時 であることを示します。
 
STARIJ:
datetime Time[] -現在のチャートの各バーの開始時刻を 含む時間配列Time[0] - 直近のバーのオープン 時間です。OrderOpenTime () が Time[0]よりも小さい 時間で開いて いる場合- これは、注文が最後のバーで開かれたことを意味 し、あなたの戦略によれば、この注文を閉じるべき時であると言えます。
あるいは、忘れられていて、1年前に 開封されたものなどです ;)
 
STARIJ:
datetime Time[] - Array 時系列、現在のチャートの各バーの開始時刻を 含む。Time[0] - 最後にバーが開かれた 時間。OrderOpenTime() がTime[0] よりも小さい場合 - これは、注文が最後のバーで開かれたことを意味し、あなたの戦略によれば、この注文を閉じるべき時 であることを示します。


ありがとうございました。iTime機能で 問題を解決したところです。私はまだ配列が得意ではありません))。

 
AlGuru:


ありがとうございました。iTime機能を使って問題を解決したところです。私はまだ配列が得意ではありません))。

どのように解決したのか見せてください。

ただ、あなたが考えてもいないことがあります。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。

アルチョム・トリシキン さん 2017.05.25 19:43

STARIJ
datetime Time[] -Time array, これは現在のチャートの各バーの開始時刻を 含む。Time[0] - 直近のバーのオープン時間 です。OrderOpenTime () が Time[0] よりも小さい場合、注文が最後のバーで開か れたことを意味、あなたの戦略によれば、この注文を閉じるべき 時が来たのです。

忘れ去られて、1 年前に発見されたなどのどちらかです ;)

 
Artyom Trishkin:

どのように解決したのか見せてください。

ただ、考えてもみなかったことがあります。



OrderOpenTime() < iTime(Symbol(), 0, 0)
 
AlGuru:

OrderOpenTime() < iTime(Symbol(), 0, 0)

また、注文の開始 時間が1週間前だった場合は?それから、それは間違いなく最後のローソク足にはありません(チャートが週足でない場合)。これも閉じた方がいいのでしょうか?

もちろん、TSの要件によりますが、私なら逆に...。

 
Artyom Trishkin:

また、注文の開始 時間が1週間前だった場合は?それから、それは間違いなく最後のローソク足にはありません(チャートが週足でない場合)。これも閉じた方がいいのでしょうか?

もちろん、TSの要件にもよりますが、私なら逆に...。


これは追加条件です。価格がMAラインに到達したら、ポジションを決済する必要があります。時には、価格がライン上でぴったりと開き、1ティックごとにポジションを開いたり閉じたりすることもあります。私はこの問題を、次のローソク足より早くポジションを閉じないことで解決しました。
 

皆さん、ごきげんよう。

ストラテジーテスターで、以下のアクションをどのようにコーディングすればよいか教えてください。

一般的な考え方

1.オープンオーダー N -X (ボリューム = 0.1)

2. この の注文がSLで決済された場合、損失を補うために、SLでの注文 NXの 終値で直ちに、 注文 N - X1(数量=0.3)をオープンします。

私たちがやらなければならないこと。

3注文(数量=0.3)がSLで決済された場合、注文N -Xの オープン時の値のみが 記憶され オープン時の 損失を補填することができます。

両方の注文を開く方法はわかっているのですが、SLで決済された0.1ロット量の注文の 時間値を記憶させる方法が最後までわかりません。

注:同じティックでのオーダークローズに関連するものです。

0.1や0.3の出来高の注文が1ティックで複数決済されることがある。

0.3の注文を 3つ出すのではなく、例えば0.1の注文を SLで1ティックで3つ決済した場合。- 0.3ロットの1オーダーのみ 開設。

この場合、0.3ロットの注文を1つだけSLで決済すると、その損失を補う 0.1ロットの注文が2つ開設される時間の値を得ることができません。

I.e. この場合、0.3ロットの 注文を 1つではなく、3つオープンする必要があります。


0.3ロットの3つの注文が、対応する0.1ロットの注文が異なるティックに(ただし1つの価格で)オープンされているにもかかわらず、1つのティックでSLによってクローズされることがあります。

この場合、プログラムは0.1ロットの最後の1つの注文に対してのみ正しい値を保存します。

私は、プログラムがSSLによって閉じられた各注文(0.1ロット)の時間値を保存する必要があります。


以下は私のコードで、これを修正する必要があります。

よろしくお願いします。

int  A2;
int A1;
int A;
int start()                                             
{                                               
int ot = OrdersTotal();                                         
int Ht = OrdersHistoryTotal();
                                                
                                                
if(Bid == iOpen(NULL,PERIOD_H1,0))
if ( A!= Hour() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
A = Hour();
}                                               
//**************************************************************************************
int Счет=0, Номер=OrdersHistoryTotal()-1;
//int A1=0;
  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    A1=OrderOpenTime();
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет ==1&&A2!=OrderOpenTime())
    {
    A2=OrderOpenTime();
     OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
    }
  }
//************************************************************************************** 
return;
}

以下は、複数の注文が1ティックで決済される場合の例です。

        08:51:38.906    2017.03.27 13:09:44  Tester: stop loss #200  at 1.08858 (1.08856 / 1.08858)
2       08:51:38.906    2017.03.27 13:09:44  1 = 1 = 1 = 1 EURUSD,M1: open #214  sell 0.30 EURUSD at 1.08856 sl: 1.09258 tp: 1.08658 ok
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #192  at 1.08879 (1.08877 / 1.08879)
0       08:51:38.906    2017.03.27 13:10:28  Tester: stop loss #193  at 1.08879 (1.08877 / 1.08879)
2       08:51:38.906    2017.03.27 13:10:28  1 = 1 = 1 = 1 EURUSD,M1: open #215  sell 0.30 EURUSD at 1.08877 sl: 1.09279 tp: 1.08679 ok
0       08:51:38.906    2017.03.27 13:10:29  Tester: stop loss #194  at 1.08880 (1.08878 / 1.08880)
 
AlGuru:

これは追加条件です。価格がМАラインを超えたら、ポジションを決済します。時には、価格がライン上でぴったりと開き、1ティックごとにポジションを開いたり閉じたりすることもあります。次のローソク足の前にポジションを閉じることで問題を解決しました。

このような問題は、まさにこのバーでオープンポジションとクローズ ポジションがあるか、またはあったかを確認することで解決されるはずです。

そうでないと、すべてを積み重ねてしまうことになります。シグナル機能はシグナルを送るべきであり、取引機能はすでにシグナルの有効性をチェックすべきです。

 

こんにちは。なぜ ユーロ vs 米ドル の通貨ペアは、1.0616 ではなく 149.16325 と表示されるのですか?