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

 
antone:
例えば、午前5時から午前10時の間に1回だけ注文をしますが、別の時間帯にもう一度注文をすることができます...

履歴で最後の注文のオープン時間を 確認し、TimeDay関数でその日を確認するのです。もしそれが今日であれば、取引しないでください。

 
Kalenzo:
履歴の最後の注文のオープン時間をチェックし、TimeDay関数で曜日をチェックする必要があります。もしそれが今日なら、取引しないでください。

私はプログラマーではないので、簡単なスクリプトを教えてください。

ありがとうございます。

 

1つのトレーリングストップ/複数の注文

すべての注文が同じレベルで終了するように、すべてのオープンオーダーのストップロスを現在のストップロスと同じに変更するEAを作ろうとしています。

extern int profit = 100;

extern int stop = 20;

int start()

{

int i, HstTotal=OrdersHistoryTotal();

for(i = HstTotal-1; i >= 0; i --)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

OrderModify(i,OrderOpenPrice(),Bid-Point*stop,profit,0,Green);

}

}

 

代わりにOrdersTotal() とMODE_TRADESを使用します。

 
 
Kalenzo:
履歴の最後の注文の注文開始時刻を確認し、TimeDay関数で日を確認する必要があります。もしそれが今日であれば、取引しないでください。

for(int k=0;k<OrdersTotal();k++)

{

オーダーセレクト(k,SELECT_BY_POS,MODE_TRADES.OrderSelect)

if(OrderSymbol()== "GBPUSD" && OrderMagicNumber()== Magic_Number)

{

if(OrderOpenTime() != TimeCurrent ()) {Trade = true;}.

if(OrderOpenTime() == TimeCurrent ()) {Trade = false;}.

}

}

何がいけなかったのでしょうか?

 

以下、赤字で訂正。

ロバート

antone:

for(int k=0;k<OrdersTotal();k++)

{

オーダーセレクト(k,SELECT_BY_POS,MODE_TRADES)

if(OrderSymbol()==Symbol()&& OrderMagicNumber()== Magic_Number)

{

if(TimeDay( OrderOpenTime())!=Day()) {Trade = true;}.

if(TimeDay( OrderOpenTime())==日()){Trade = false;}.

}

}

同じタイプのコードで、オープンタイムが2時間の間かどうか、あるいは11時45分のような分単位の時間かどうかをチェックして、新しい取引を防ぐことができます。

int openHour = TimeHour(OrderOpenTime());

if (openHour > 10 && openHour < 13) Trade = false;

if (openHour = 13) Trade = true;

何がいけなかったのか、教えてください。
 

ATTN Programmers - 新しい6桁の価格に関する問題

すべてのプログラマーへ。

一部のブローカーが価格に小数点以下の桁数を追加していることに問題があることが判明しました。これは、ストップロス、テイクプロフィット、ブレイクアウトレベルなどの 計算でポイントが使用されている場合、問題を引き起こします。

簡単な解決策があります。

次の関数を使用して、Point への参照をすべて myPoint に置き換えます。

EAの冒頭で変数を宣言しています。

double myPoint;

そして、initでこの関数を使って値を設定します。

init()

{

myPoint = SetPoint();

}

次に関数です。

// Point 値を小数点以下 2 桁または 4 桁に設定します。

// 小数点以下 3 桁と 5 桁を使用するブローカーに対応するため

double SetPoint()

{

double mPoint;

if (桁数 < 4)

mPoint = 0.01;

さもなければ

mPoint = 0.0001。

return(mPoint);

}

また、線を引く位置やヒストグラムのサイズを決定するために Point を使用するいくつかのインジケータでも問題が発生します。

プログラマがこの情報を必要としているフォーラムやグループにこの情報を伝えてください。

私はすでにYahooグループのMTE & Iに投稿しました。

お役に立てれば幸いです。

ロバート

 

こんにちは

私はいくつかの助けを探しています私は、特定のバー/日数で ポジションを終了する方法を見つけることができないようです。例えば、私は月曜日にロングして、システムは5バー/日後の終値で終了します。

どんなヘルプでも結構です。

よろしくお願いします。

Beno

 

Benoです。

上の投稿と同じようなコードで、取引しないようにすることができます。ただ、オープンから何日後にクローズするかをチェックするだけです。このコードは、時間または分を使用するように変更することもできます。

もう一つの方法は、取引開始時に、取引を終了する時間をexit_timeとして計算することです。それから、終了するために、チェック終了コードでexit_timeをチェックするだけです。

クローズ時間を得るために、オープン 時間に正しい値を加えるために適切な式を使用する必要があります。これは、OrderOpenTime()に、バーごとの分数*クローズするまでのバー数を追加したものを使用します。

これがお役に立てば幸いです。

ロバート

Beno:
ギデー

例えば、月曜日にロングして、5日後の終値でシステムが終了します。

どんなヘルプでも結構です。

乾杯

ベノ