コーディングのヘルプ - ページ 109

 

保留中の注文の 修正

皆さん、保留中の注文の価格変更をプログラムしてみました。これは私の最初のEAの一つです。私はできるだけ多くのEAを書き、後で複雑なEAを書けるようにしたいと思っています。私の注文の修正で、私のデモ口座のチャートにそれを置くとき、それが動作しないという問題があります。誰か間違いを見つけて、それを修正することによって私を助けることができますか?ありがとうございます。私は本当にこれ以上の手がかりを持っていません。 乾杯

{ RefreshRates(); double ppoint=MarketInfo(OrderSymbol(), MODE_POINT); int total=OrdersTotal(); double pBid=MarketInfo(OrderSymbol(), MODE_BID); double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); double priceNew; //---- for(int i=0; i50*ppoint) { priceNew=(pBid-50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } if (OrderType()==OP_SELLSTOP) { if (OrderOpenPrice()-pAsk>50*ppoint) { priceNew=(pAsk+50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } } }
 

ヘイ、ロバート、これまでの協力に感謝します。どのように私はここに正しくコードを投稿するのですか?ありがとうございます、そしてありがとうございます。

 
fabian103:
ロバート、これまで助けてくれてありがとう。どうすればここに正しくコードを投稿できますか?ありがとうございます。

fabian103

phpのコードボックスで単純なコピー&ペーストをする必要があります。

なぜかあなたのコードは「あちこちにある」のです。試してみてください。もしうまくいかない場合は、修正したいコードの部分を別のファイルとして添付してください(添付ツールを使用します - 画像で指摘されているものです)。

ファイル:
attach.gif  36 kb
 

こんにちは。

ストキャスティクスのインジケーター内でボリンジャーバンドの 値を計算しようとしているのですが、うまくいきません。

ペアを参照した値は得られますが、0から100の間にあるはずの値が必要です。

何かポインタがありますか?

ありがとうございます。

 
metcalfe:
こんにちは。

ストキャスティクスのインジケーター内でボリンジャーバンドの値を計算しようとしているのですが、うまくいきません。

ペアを参照した値は得られますが、0から100の間にあるはずの値が必要です。

何かヒントがあれば教えてください。

ありがとうございます。

ストキャスティクスのボリンジャーバンドの 計算(シンボル価格の代わりにストキャスティクスの値を使って)ということでしょうか。iBands()は常にメインチャートの価格を使用するため、内蔵のiBands()ではそのようなことはできません。

iBandsOnArray()を使うこともできますが、これにはメタトレーダーの永遠の問題があります:乖離は整数の乗算器しか使えません。乖離を小数値に設定することはできません。そこで、iStdDevOnArray()とiMaOnArry()関数を使って、任意の値、任意の幅のボリンジャーバンドを自分で計算するのが一番です。ストキャスティックの場合、それを行うコードは次のようになります。

for(int i=limit; i>=0; i--) stoch = iStochastic(NULL,0,StochPeriod,1,StochSlowing,MODE_SMA,StochPrice,MODE_MAIN,i);

for( i=limit; i>=0; i--)

{

double dev = iStdDevOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollmi = iMAOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollup = bollmi+BollingerDeviations*dev;

bolldn = bollmi-BollingerDeviations*dev;

}

インジケータ自体も添付しておきますので、引き続き実験してみてください。チャート上ではこのようになります。

____________________

PS:バンドの値は、偏差に使用するバンド倍率とボリンジャーバンドの計算自体の長さに応じて、(ストキャスティクスが0または100で推移している場合)0と100の境界を超えることができます。

 
mladen:
ストキャスティクスのボリンジャーバンドを計算するということでしょうか。iBands()は常にメインチャートの価格を使用するため、ビルトインされたiBands()ではそのようなことはできません。

iBandsOnArray()を使うこともできますが、これにはメタトレーダーの永遠の問題があります:乖離は整数の乗算値しか設定できません。乖離を小数値に設定することはできません。そこで、iStdDevOnArray()とiMaOnArry()関数を使って、任意の値、任意の幅のボリンジャーバンドを自分で計算するのが一番です。ストキャスティックの場合、それを行うコードは次のようになります。

これは超素晴らしい!!!!

どうもありがとうございます。

そして、超速い返信に感謝します。

もう一つ質問があります。

indiは非常にうまく動作しますが、バンドの値についてeaで正しい数値を得ることができません。

例えば、あなたが添付した写真のように、81...67...54...という数字があります。

 
metcalfe:
それはスーパーアウェサムです!!!!

どうもありがとうございました。

そして、超高速の返信をありがとうございます。

もう一つ質問です。

indiは非常にうまく動作しますが、私はバンドの値についてeaで正しい数字を得ることができません。

例えば、添付した写真のように81...67...54...という数字がありますね。

:):)

その例ではストキャスティクスの 長さは32に設定されています。これがデフォルトのパラメータと比較した場合の唯一の違いです。

 
mladen:
:):) その例ではストキャスティクスの長さが32に設定されています。デフォルトのパラメータと違うのはそれだけです。

すみません、質問したいことをうまく説明できませんでした。

私のEAでは、画像のようなストキャストウィンドウで、例えばアッパーバンドやローワーバンドの番号を取得しようとしています。例えば、私は81.8116というアッパーバンドを取得したいのですが、次のようにコード化しました。

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \renamed the indi.

と入力したのですが、正しい数値が出ません。

Where am I wrong?

Thanks

 
metcalfe:
すみません、説明不足でした。

私のEAでは、画像のようなストキャストウィンドウで、例えばアッパーバンドやローワーバンドの番号を取得しようとしています。例えば、私は81.8116というアッパーバンドを取得したいのですが、次のようにコード化しました。

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \renamed the indi.

と入力したのですが、正しい数値が出ません。

どこが違うんですか?

ありがとうございます。

このようにします。

double upperBand = iCustom(NULL,0,"name",24,1,0,0);[/PHP]

The problem was that you can not put 0 in place of the slowing parameter since in that case metatrader will cause an error when calculating stochastic, and you will always get 0 as a return value, so use 1 instead (it is equivalent to no smoothing of the stochastic value). Also, better to use buffer numbers (MODE_MAIN is a reserved word in MQL - it 0 but in some cases they are not what you expect them to be). To get the rest of the values you would then have to write something similar to this :

[PHP]double middleBand = iCustom(NULL,0,"name",24,1,1,0);

double lowerBand = iCustom(NULL,0,"name",24,1,2,0);
 

よし...

超ありがとう。

あなたは私を救った....