質問は以下の通りです。 MQL4.community にあるMQL4の本では 、「GlobalVariables」の章の「Properties of GV Variables」のセクションに こう書かれています。"GV変数はdouble型しか持てない"。以下、「GlobalVariableDel()関数」の項で、エキスパートglobalvar.mq4の例として、次のような内容を記載しています。
//--------------------------------------------------------------------// globalvar.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------------int Experts; // Колич. экспертовdouble Depo=10000.0, // Заданный депозит
Persent=30, // Заданный процент
Money; // Искомые средстваstring Quantity="GV_Quantity"; // Имя GV-переменной//--------------------------------------------------------------------int init() // Спец. функция init
{
Experts=GlobalVariableGet(Quantity); // Получим тек. знач.
Experts=Experts+1; // Колич. экспертовGlobalVariableSet(Quantity, Experts); // Новое значение
Money=Depo*Persent/100/Experts; // Средства для эксп.Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
return; // Выход из init()
}
//--------------------------------------------------------------------int start() // Спец. функция start
{
int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.if (Experts!=New_Experts) // Если изменилось
{
Experts=New_Experts; // Теперь текущ. такое
Money=Depo*Persent/100/Experts; // Новое знач. средств Alert("Новое значение для эксперта ",Symbol(),": ",Money);
}
/*
...
Здесь долен быть указан основной код эксперта,
в котором используется значение переменной Money
...
*/return; // Выход из start()
}
//--------------------------------------------------------------------int deinit() // Спец. ф-ия deinit
{
if (Experts ==1) // Если эксперт один..GlobalVariableDel(Quantity); //..удаляем GV-переменelse// А иначе..GlobalVariableSet(Quantity, Experts-1); //..уменьшаем на 1Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузкеreturn; // Выход из deinit()
}
//--------------------------------------------------------------------
バータイムを 求め、シニアTFのバーナンバーに 再計算する。
なぜコードを書かないの?
古いタイムフレーム(extern int = ... ; //W1, MN1)の指定した曲がり角(extern int b= 2)をStartBarとする方法。
訂正
指定された時間枠の2つのトップ(週足と月足とする)をマッチングさせる。
これは正しい方法なのでしょうか?
条件 tf1 >tf2
質問は以下の通りです。 MQL4.community にあるMQL4の本では 、「GlobalVariables」の章の「Properties of GV Variables」のセクションに こう書かれています。"GV変数はdouble型しか持てない"。以下、「GlobalVariableDel()関数」の項で、エキスパートglobalvar.mq4の例として、次のような内容を記載しています。
質問:この例では、GV 変数 Expert と New_Expert は、先に述べた ようにdouble 型であるべきですが、なぜ int 型 なのでしょうか?
回答ありがとうございました。
このやり方で良いのでしょうか?
条件 tf1 >tf2
何かが間違っている。
最初のサイクルでは、高値のTFで指定された曲げの価格を見つけようとします。私は安値のTFで2番目のサイクルを開始します。ここでは、チャート上にある限り、バー上の各曲げの価格を探し、最初のサイクルで見つかった価格と比較します。そのような価格を見つけたら、このTFで指定された曲げのバーの時間を返します。
テスターで2000.01.01から起動しました。
ログに記載されている内容
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1688
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2495
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1192
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2315
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1069
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3161
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2351
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4535
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.338
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4249
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.416
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3353
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2658
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3138
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0344
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1537
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0608
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1216
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.079
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2401
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0104
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0917
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.8227
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.9596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: t1 1992.09.01 00:00
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p1 1.4104
2000年、つまりテスト期間開始時も同様でした。
どこがエラーなのか。私は弱いプログラマーです。テストプログラムを書きたいのですが。苦労しているんですよ。受け取ったデータによって段階的に行っているので、プログラマーにお願いすることはできません。
ここで少し助けてほしいことがあります。また、前のページでNewZZ()関数の書き方を教えてもらいました。
どなたか間違いを訂正し、説明していただけるとありがたいです。
何かが間違っている。
弱者を助けよう。
こんにちは。ホームページで末尾機能を発見
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)を続ける。
if(OrderType()==OP_BUY)
{
if(入札-注文開始価格()>ポイント*トレイリングストップ_)
{
{ if(OrderStopLoss()<Bid-Point*TrailingStop_)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop_,OrderTakeProfit(),0,Green)。
return(0)です。
}
}
}
if(オーダータイプ()==OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop_))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop_)) || (OrderStopLoss()==0)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop_,OrderTakeProfit(),0,Red).を実行。
return(0)です。
}
}
}
}
ストラテジーのテストでは、最初の注文が開いた後、この機能は問題なく動作します。しかし、2次を開いた後、末尾の関数を参照するとゼロ除算 エラーが発生します。2次、3次などでもtrailing functionが動作するようにしたいので、よろしくお願いします。
フォーラム全体を語ることはできませんが、個人的には、インデントがないソースを見ると、「作者に何を説明しても無駄だ」という強迫観念が湧いてくるのです。
エディターでインデントしているのに、ここにコピーするとインデントが消えてしまう...。