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

 

数学的期待値のヘルプをお願いします。

こんにちは。

私はある程度自分自身をスヌークしているようです。

私は私のEA内で期待値の数式を使用しようとしている私は1-avgwin/avgloss*system accuracy+1の数式を持っており、それはうまく動作しますが、私は計算する方法を知りたいのですが、注文とStopLossの間の差は、例えば、次のように表示されます。

op_sellstop 1.63406

StopLoss 1.63603

1.63406 - 1.63603 = -0.00197 これは正の数である必要があると思うのですが、どうでしょうか?

1.45の期待値

そこでTakeProfitを計算するために、-0.00197 * 1.45 = -0.00285

OP_SELLSTOP 1.63406 -1.63121に TPを置く。

ロングポジションの場合はその逆

このスレッドのすべての部分https://www.mql5.com/en/forum/178980、あなたがExcelシートで見ている場合、あなたは私がちょうどそこにあることがわかります。

どんな助けでも素晴らしいだろう。

Benoに乾杯

 
Beno:
こんにちは。

私はある程度自分自身をスヌークしているようです。

私は私のEA内で期待値の数式を使用しようとしている私は数式1-avgwin/avgloss*system accuracy+1を持っており、それはうまく動作しますが、私は順序とStopLossの間の差を計算し表示する方法を知りたい、例えば。

op_sellstop 1.63406

StopLoss 1.63603

1.63406 - 1.63603 = -0.00197 これは正の数である必要があると思うのですが、どうでしょうか?

1.45の期待値

そこでTakeProfitを計算するために、-0.00197 * 1.45 = -0.00285

OP_SELLSTOP 1.63406 -1.63121に TPを置く。

ロングポジションの場合はその逆

このスレッドのすべての部分https://www.mql5.com/en/forum/178980、あなたがExcelシートで見ている場合、あなたは私がちょうどそこにあることがわかります。

どんな助けでも素晴らしいだろう。

チアーズ・ベノ

一番簡単な方法は、そのことを考えずに使うことです。

double MathAbs(double value)

MathAbs - MQL4 ドキュメント

関連情報

 

CRNさん、こんにちは。

返信ありがとうございます。

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

私はそれが正しいと思うが、ちょうどPipSL 15769.68328362が表示されます。

1 2011.01.04 00:00売りストップ1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

2 2011.01.07 08:20売り 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

3 2011.01.07 08:20修正 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00

4 2011.01.11 23:40 close at stop 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34

そして、私は売りとSLの間に実際の違いを必要とする

 

誰か助けてください。

こんにちは、そしてすべての人に幸せなクリスマスを。

まず、私はこのフォーラムに新参者です。私はEAで問題を持って、誰かが私のためにそれを修正することができますか?問題は、このEAを実際の取引に設定する方法で、私のライブ取引ではEAがちょうどグレー色です。

ここに添付ファイルがあります。

spielershedge_library.mqh

スピールシェッジ_ピップスター.mq4

spielershedge_ea_v2.8.1.ex4は

Spielershedge_divergence_v5.1.ex4

-それは古いEAであったが、私は多分私達が私達皆に寄与する何かを共有し、取ることができると思う。

-I just found this fromHedge trading spieler system derived from futures spread trading - Page 193 @ Forex Factory( SpielersHedge PipStar.mq4 ) and the rest fromHedge trading spieler system derived from futures spread trading - Page 87 @ Forex Factory -Media of the Hedge trading spieler system derived from futures spread trading - Page 193 @ Forex Factory-Headquarters.

-私の悪い英語のために申し訳ありません。

P/S :このページでは、そのような方々の声をお届けします。私は、知識を与えれば与えるほど、より多くの知識を得ることができると信じています。

 
Beno:
こんにちは、CRNです。

返信ありがとうございます。

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

私はそれが正しいと思うが、ちょうどPipSL 15769.68328362が表示されます。

1 2011.01.04 00:00売りストップ1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

2 2011.01.07 08:20売り 1 0.01 1.54279 0.00000 0.00000 0.00 10000.00

3 2011.01.07 08:20修正 1 0.01 1.54279 1.57712 0.00000 0.00 10000.00

4 2011.01.11 23:40 close at stop 1 0.01 1.56045 1.57712 0.00000 -17.66 9982.34

と、売りとSLの実際の差を要求しています。

iClose(0,0,0)-OrderStopLoss() を使用 する必要がある場合。

ただし、OrderSelectで正しい注文を選択する必要があります。

参考

 

CloseAllを使用した時間 フィルター ヘルプをお願いします

ギドデイ

EAで時間フィルターが動作していますが、クローズオールを付けようとすると、時間がクローズ時間と等しい場合、クローズオールのオープンポジションになります。

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

for (int i=OrdersTotal()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}
 

よろしくお願いします

extern int BuyStopTakeProfit=10;

extern int BuyStopSL=1000;

どのようにコードを書くか

BuyStopTakeProfitが TakeProfitに ヒットしたら、すべての未決済注文を 削除する。

誰か助けてください

 

助けて!!!! お願いします!!! iCustom関数

助けてください。

C_EA_rev6.mq4がカスタムインジケータ VSATEXTSIGNALS.mq4から任意のバッファを呼び出すためにあらゆることを試しました。 iCustom関数を使用しましたが、エラーコードと理解している2147483647を常に返します。 カスタムインジケータは、ボリュームスプレッド分析技術に基づいてテキストシグナルをチャート上に配置します。 カスタムインジケータは、チャートに貼り付けると正常に動作します。 このために数え切れないほどの時間を費やし、私が知っているすべての組み合わせを試してきました。 何か手助けがあれば、とてもありがたいです。 また、質問ですが、スクリプトや.dllファイルを呼び出すカスタムインジケータにiCustom関数を使用することは可能でしょうか?

インジケータとEAへのコードは添付ファイルをご覧ください。

ありがとうございます。

cmfxtrader

ファイル:
 
cmfxtrader:
助けてください。

C_EA_rev6.mq4でカスタムインジケータVSATEXTSIGNALS.mq4から任意のバッファを呼び出すためにあらゆることを試しましたが、うまくいきません。 iCustom関数を使用しましたが、エラーコードと理解している2147483647を常に返します。 カスタムインジケータは、ボリュームスプレッド分析技術に基づいてテキストシグナルをチャート上に配置します。 カスタムインジケータは、チャートに貼り付けると正常に動作します。 このために数え切れないほどの時間を費やし、私が知っているすべての組み合わせを試してきました。 何か手助けがあれば、とてもありがたいです。 また、質問ですが、スクリプトや.dllファイルを呼び出すカスタムインジケータにiCustom関数を使用することは可能でしょうか?

インジケータとEAへのコードは添付ファイルをご覧ください。

ありがとうございます。

cmfxtrader

ねぇ。

インジケータからバッファを読み込もうとすると、バッファではないテキストメッセージが出力されるということです。そのため、2147483647という値が出力されていますが、これはEMPTY_VALUEであり、エラーではありません。

とにかく、あなたはこのインジケータからのシグナルを自動化したいのだと思います。そのための簡単なソリューションがあります。このインジケータは7つのバッファを持つと宣言されていますが(#property indicator_buffers 7)、5つしか使っていないのです。つまり、計算のためだけにもう1つバッファを宣言し、そのバッファをメッセージで埋めることで、識別することができます。メッセージの番号はTextOutput関数に書かれています。どのメッセージが表示されるかは、バッファに数字を追加するだけです。例えば、テキストが:例えば、テキストが「UPTHRUST / Weakness_」なら、バッファに1を加え、メッセージが「PSEUDO UPTHRUST / Weakness_」なら4を加え、といった具合にです。バッファのインデックスは、変数 "i "の値と同じになります。

2番目の質問ですが、iCustom関数は常にインジケーター(スクリプトではない)に使用することができ、そのインジケーターで宣言されたバッファに値が格納されれば、その値を読むことができます。例えば、線を描くインジケータであれば、線の値を読むことができます。なぜなら、何かを描くためには(ラベルを除いて)バッファを埋めなければならないからです。なぜなら、何かを描くためには(ラベルを除いて)、インジケータはバッファを埋めなければならないからです。インジケータが(添付したような)グラフィックオブジェクトを作成 するのであれば、a) グラフィックオブジェクトから値を読む、または b) (上で提案したように)インジケータを再コード化する必要があります。インジケータがDLLを使用しているかどうかは関係なく、iCustom関数から値を読み取るために、バッファを適切に埋める必要があるだけです。

 
Beno:
Gidday

EAで時間フィルタが動作していますが、クローズオールを取り付けようとしたところ、時間が終値と同じならクローズオールのオープンポジションが表示されるようになりました。

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

for (int i=OrdersTotal()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}

この部分を確認してみて ください。

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend)))

|| (tradesunday==false && DayOfWeek()==0)|| (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

他の部分はもっと簡単かもしれませんが、これで動作するはずです。

しかし、すべての部分を閉じる前にスクリプトを終了してしまうと、うまくいきません。

例えばこの部分を見てください。

(fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday) return(0);

英語では、if it is friday, and friday filter is ON, and the TimeMark was passed (eg. end time is 18.00 and it is 18.01) then return(0) という意味です。

本来は、「もし、金曜日で、金曜日のフィルターがONで、TimeMarkがCLOSE ALLを通過し、(例:終了時刻が18.00で、18.01)ならreturn(0)」とすべきです。