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

 

アイデア

OK少年少女

私はCUF(よく使われる関数)を作成するというアイデアを考えていました - 私が読んだ限りでは、EA内からスクリプトを呼び出すことはできません。

しかし、私は毎回車輪を再設計することを余儀なくされるのが嫌いで、また、この方法で物事がうまくいくと確信しているので、回避策を考えています。

スクリプトは誰もが知っているように、ロードされると、ショートカットキーを押した場合を除き、二度とロードされることはありません。

これは、すべてのEAで見られる大きな問題ですが、彼らは継続する前に、いくつかの時間条件またはいくつかの奇妙な "スリープ "条件が通過するのを待って立ち往生しているように見えるということです。 このため、一瞬でキャンセルして売るということが起こりにくく、数秒で大儲けできるような非常に不安定な状況では大きな失敗となります。

解決策は? グローバル変数で動作するCUFFインジケータを作成しますか? 誰もがこれを試してみました。 インジケータは、その完璧なようにすべてのtickを 循環させる。

 

複数の指標とバーの条件が満たされたときに、音や電子メールによるアラートを送信するコードを作成するにはどうすればよいですか?

 

こんにちは。

メタストックに内蔵されているref()とstochmomentum()はメタトレーダーのいくつかの関数で実装されているのでしょうか?

thnx

 

ダリアン 上記のグローバルの例を見てください。メールや口笛、やりたいことをするスクリプトを見つけて、それをコード化してください。

 

グローバルで

以下のようなIndicatorにGlobalVaribleを追加することは可能でしょうか?

if ( トレンド[2]0 && ボリューム[0]>1 && !UpTrendAlert)

{

GlobalVariableSet("trend "+Symbol(),1)。

// Print("UP" + GlobalVariableGet("trend "+Symbol()));

メッセージ = " 買い "+Symbol()+" M "+Period()+":BUYのシグナル";

if ( AlertMode>0 ) Alert (Message);

UpTrendAlert=true、DownTrendAlert=false。

で、そのGlobalVariableをEAで呼び出します。

int init() {

GlobalVariableDel("trend "+Symbol())。

トレンド = GlobalVariableGet("trend "+Symbol())。

買い = (トレンド== 1);

売り = (トレンド== 2)。

すべてのヘルプを感謝します。

 

しかし、1つ以上の通貨を取引する場合は、うまくいきません。

 

配列のトラブルで困っています。

こんにちは。

ある未決済注文がカットオフポイント(例えば$-1000)より損失が大きいかどうかを判断する関数を 作ろうとしています。

この関数は、OrderTicket() と OrderProfit() を2つの別々の配列に格納し、カットオフ・ポイントに達したことを示すために return (1) で終了することになっています。

これらの配列に値を格納する前に、OrderTicket() 配列をチェックして、この注文がすでに申請されているかどうかを確認する必要があります。

もしOrderTicket番号がすでに配列に格納されているなら、それは、その注文が追加で1000ドルを失ったかどうかを判断し、もしそうなら、OrderProfit()配列の値を新しい値で置き換え、新しいカットオフポイントに達したことを示すためにreturn(1)で終了しなければならないことになっています。もし注文が追加で1000ドルを失っていなければ(カットオフと呼ばれる)、注文が追加で1000ドルを失っていないことを示すために return(0) を返さなければなりません。

私はそれがかなり動作していると思うが(よく分からない?)、何らかの理由で配列は正当な値と共に多くの '0' 値で満たされる。配列の出力は次のようになります。

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 431 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 425 ResumeArrayPrices[k] = -3042

ResumeArrayTickets[k] = 386 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 371 ResumeArrayPrices[k] = -12933

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 320 ResumeArrayPrices[k] = -6057

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 249 ResumeArrayPrices[k] = -5076

ResumeArrayTickets[k] = 241 ResumeArrayPrices[k] = -1017

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 230 ResumeArrayPrices[k] = -13122

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

ResumeArrayTickets[k] = 186 ResumeArrayPrices[k] = -4068

ResumeArrayTickets[k] = 128 ResumeArrayPrices[k] = -1008

ResumeArrayTickets[k] = 0 ResumeArrayPrices[k] = 0

[/code]

The following is my actual code:

[code]

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

}

int arraycount1 =1;

int arraycount2 =1;

bool found = false;

int k;

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

if (OrderProfit()< Cutoff)

{

for (k=0; k<ArraySize(ResumeArrayTickets); k++)

{

if ((ResumeArrayTickets[k] == OrderTicket()) && ResumeArrayTickets[k] !=0)

{

found = true;

if (ResumeArrayPrices[k] + Cutoff < OrderProfit())

{

return (0);

}

else

{

Print ("ELSE");

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1);

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

if (found == false)

{

arraycount1 = ArrayResize(ResumeArrayTickets,ArraySize(ResumeArrayTickets) + 1)'

arraycount2 = ArrayResize(ResumeArrayPrices,ArraySize(ResumeArrayPrices) + 1);

ResumeArrayTickets[k] = OrderTicket();

ResumeArrayPrices[k] = OrderProfit();

return (1);

}

}

}

return (0);

}

}

 

1バーで1回EAをリフレッシュさせる

こんにちは、EAをリフレッシュして、最初に初期化されたときのように反応させる方法はありますか?(リスタートのように)1Barに1回行われる必要があります。例えば、30分に一度です。

RefreshRates()とWindowRedraw()はそれを適切に行いません。

私はまた、同様にいくつかの変数を保持し、データを失うことなくしたいと思います。

これを実現する方法はありますか?

また、インジケータでもこのようなことができたらと思います。

よろしくお願いします。

 

プログラミングに関するヘルプ

皆さん、こんにちは。

私は、チャートの時間に基づいて通貨の強さを表示するために通貨の強さのメーターを修正するために取り組んでいます。 現在、使用しているコードは以下の通りです。

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

MODE_HIGHとMODE_LOWは、その日の高値と安値を取得することは理解しています。 どうすれば、現在の時間 枠の高値と安値を取得できるでしょうか?

ありがとうございます。

P.S. 私はプログラマーではないので、小さな単語を使ってください:)

 

iHighとiLowの機能については、ヘルプマニュアルをご覧ください。

グッドラック

ラックス

理由: