アスク! - ページ 142

 

あるEAについて教えてください。

売り注文を 決済して、新しい買い注文を出そうとしています。買い注文は開きますが、売り注文はエラー4051を出します。

私は以下を使用しています。

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// クローズポジション

そして

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue).OrderTicket(), OrderLots, Buying, Bid, Slippage, Gold);// ポジションをクローズします。

 

マジックナンバーを変更するには?

皆さん、こんにちは。

私は差分EA(あるオリジンのEAからのコピー)を使って差分チャートウィンドウで差分ペアを取引していますが、マジックナンバーを変更したいのですが、マジックナンバーがどのように機能しているのかわかりません。教えていただけませんか?

1.マジックナンバーはどのように機能するのですか?

2.マジックナンバーの変更方法は?

3.マジックナンバーを変更するために、どのような数字を使ってもよいのですか?

4.4.私のEAのマジックナンバーは16763ですが、マジックナンバーを変更する例を教えてください。

ご協力ありがとうございました。

 

マジックナンバーは、ユニークな識別子に過ぎません。これは同じEAの各インスタンスを区別すると同時に、あなたが実行している他のEAとも区別します。

マジックナンバーが外部変数である場合は、好きな番号に変更してください。ただし、実行中の他のEAと同じ数字でないことを確認してください。

外部変数でない場合は、コードの中でその変数を探し、好きな数字に変更してください。

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

ラックス

 
luxinterior:
マジックナンバーはユニークな識別子に過ぎません。同じEAの各インスタンスを区別すると同時に、実行中の他のEAとも区別することができます。

マジックナンバーが外部変数である場合は、好きな数値に変更してください。ただし、実行中の他のEAと同じ数字でないことを確認してください。

外部変数でない場合は、コードの中でその変数を探し、好きな数字に変更してください。

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

ルクス

こんにちは、Luxです。

私のEAのマジックナンバー:16763を16764 ; 16765 ect...に変えられるということですか?

迅速な回答をありがとうございました。

Luu

 
luu:
こんにちは、Luxです。

EAのマジックナンバー:16763を16764 ; 16765 etc.に変更できるということでしょうか?

早速のご回答ありがとうございました。

ルウ

その通りです。この番号がユニークである限り、どのような番号を選んでも問題ありません。

特別な理由がない限り、変更する必要はないでしょう。

ラックス

 
luxinterior:
その通りです。ユニークな番号であれば、どんな番号を選んでも問題ありません。

特に理由がない限り、変更する必要はないでしょう。

ルクス

ラックスさん、ありがとうございました。

ルウ

 

EAの決済注文の問題

友人たちは、EAがサポート抵抗の指標を持っている。 EAは、目標利益に注文を完了する必要があります。

 

簡単な汎用スクリプトについて教えてください。

こんにちは

簡単なスクリプトを作りたいのですが、どなたか手伝っていただけませんか?

私が必要とするものは次のとおりです。

SELL_STOPとBUY_STOPの3-4注文を出す、どんなシンボルにも使える非常に汎用的なスクリプトです。

例えば、buy_stopを現在の価格より20ポイント高く、2番目の注文を現在の価格より40ポイント高く、3番目の注文を80ポイント高く、といった具合に置きたいとします。

Sell_Stopも同じです。

私はいくつかの例に基づいてスクリプトを組み立てようとしましたが、私はC言語に精通していないため、いくつかの問題を抱えています。

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; // プリセットSL (pt)

int Dist_TP =100; // プリセットTP(pt)

string Symb=Symbol(); // シンボル

RefreshRates();

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK); double point =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT); double ask =MarketInfo(Symb,MODE_ASK);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (Dist_TP < Min_Dist) // 許容値より小さい場合。

{

Dist_TP=Min_Dist; // 許容値を設定する。

Alert(" TakeP = ",Dist_TP," pt "の距離を増加させた。)

}

//-------------------------------------------------------------------- 6 --

Alert("The request was sent to the server. Waiting for reply...");

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point; // 要求されたTPの価格

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP);

Sleep(500);

int Error=GetLastError(); // 失敗しました。

switch(Error) // オーバーコンマブルエラー

{

case 130:Alert("The SL is wrong. Retrying...");

RefreshRates(); // データ更新

if (Dist_SL < Min_Dist) // 許容値より小さい場合

{

Dist_SL=Min_Dist; // 許容値を設定する。

Alert(" SLの距離を伸ばしました = ",Dist_SL," pt");

}

i=i-50;

Alert (i);

アラート(Dist_SL);

cnt=cnt+1;

アラート(cnt);

if (cnt==3)break;

continue; // 次の繰り返しで

case 135:Alert("The price has changed. Retrying...");

RefreshRates(); // データを更新します。

continue; // 次の繰り返しで

case 136:Alert("No prices. Waiting for a new tick...");

while(RefreshRates()==false) // 新しいティックまで。

Sleep(1); // サイクル遅延

continue; // 次の繰り返しで

case 146:Alert("Trading subsystem is busy. Retrying...");

Sleep(500); // 簡単な解決策

RefreshRates(); // データを更新します。

continue; // 次の繰り返しで

switch(Error) //重大なエラー

{

case 2 : Alert("Common error.");

break; // 'switch'を終了する

case 5 : Alert("Outdated version of the client terminal.");

break; // 'switch'を終了する。

ケース64Alert("アカウントはブロックされています。");

break; // 'switch'を終了します。

case 133:Alert("Trading forbidden");

break; // 'switch'を終了します。

デフォルトではAlert("Occurred error ",Error);//その他の選択肢

}

//ブレーク

}

//-------------------------------------------------------------------------- 9 --

Alert("The script has completed its operations ---------------------------");

return; // start() を終了します。

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

それは一種の動作しますが、私は何度もストップロスに問題があります。

 

もし、ガウス型SRレートとスネークを入れ替えることができれば、配当があるかもしれません。

配当があるかもしれませんね。

ssrcの代わりに、片側のガウシアンSRレート槍兵ランク相関になるのでは?

"osgsrspc "笑(コーディングしてみましたが、頭の上を通り過ぎました)

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

ファイル:
 

新しい質問です。小数点以下5桁と資金管理

私がよく利用する、あるEAの顧客向けのフォーラムで、ある顧客が、EA開発者がまだそのEAの小数第5位と端数の価格問題を修正していないことに不満を漏らしていました。

開発者は数ヶ月前に、この問題を解決するには特別なスクリプトが必要だと主張していました。それから4ヶ月経った今、私は基本的にまだ修正されていないのはおかしいと言い、ここで 説明されている方法と同様に「ポイント」を再定義するための数行のコードで済むと主張しました。

そこで質問です。開発者は、この問題は超複雑で、解決するには特別なスクリプトプログラミングが必要だとまだ主張しています。以下は、開発者からの説明です。

こんにちは、ジョン。あなたの言うとおりです。ますます多くのブローカーが端数pipsに移行しています。しかし、fractional pipsの問題は[name removed]のバグではありません。MT4プラットフォームが小数点以下の桁数の違いを定義する方法の問題なのです。EAとインジケータがその違いを認識できるよう、再プログラムしています。これは、MT4プラットフォーム内の変数「ポイント」の定義に含まれているはずで、EAはこの定義を使用して小数点以下の桁数を決定します。しかし、多くのMT4プラットフォームは、EAに小数点以下4桁以上を渡さないので、特別なスクリプトを含める必要があります。私たちの課題は、EAとすべてのインジケータを通じて「ポイント」変数を使用することです。したがって、「ポイント」を再定義するために数行のコードを追加するほど簡単ではありません。来週末までに、分数ピッププログラムを動作させたいと考えています。

そこで質問です。経験豊富なプログラマーの皆さんの中に、このような複雑なスクリプトの要件や、MT4プラットフォームの "Point "の値に関する問題に遭遇した方はいらっしゃいますか?

Point」が小数点以下4桁までであると仮定しても、Point = 0.001のペアだけを心配すればよいことになります。

あるいは、「Point」の代わりに「Digits」を使っても、やはり数行のコードで済みます。

あるいは、「UseFractionalPips = true;」のようなブーリアン変数を使って、「Point」を再定義することも可能です。

開発者が問題をより複雑にしているような気がします(あるいは他の動機があるかもしれません)。私は、「ポイント」が小数点以下4桁までしか使えないという問題を読んだことも聞いたこともありませんし、仮にそうだとしても、「桁数」や他の方法を使えば、特別なスクリプトを書かずにポイントを再定義することができます。

私はMT4でプログラミングを始めてまだ1年半なので、MT4で端数ピップ価格を扱うための「修正」がどれほど複雑かについては、より経験豊富なプログラマーに委ねようと思いました。

何かご意見はありますか?

よろしくお願いします。

-B