初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1434

 
jeremy10p100 # :
こんにちは、ご返信ありがとうございます。 私の期待に応えるスクリプトを作ることができましたが、残念ながらまだ2つのエラーがあり、理解することも修正することもできません。 少し助けてもらうために誰に連絡すればいいかわかりますか? それはコンパイル後にエラーとして登録される2行のコードだけです...

フリーランスの仕事を作成し、応募してきた開発者から選ぶことができます。

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

WebRequestでjsonを送信しようとすると、サーバーが"\u0022BTCUSDu0022 is not a valid bundle type for denormalisation. "と返します。


ヘッダーと
StringToCharArrayですべてのエンコーディングの種類を指定してみましたが 、何も役に立ちませんでした。

pythonからは、すべて問題なく飛びます:
response = requests.post(url, data=json.dumps(data), headers=headers)
つまり、サーバーではすべてOKです。

問題を解決するには?

 

質問を少し言い換えます。OnInit ブロックでオプティマイザにコマンドを与えて、特定の条件下でテスト/最適化バリアントをスキップさせることは可能でしょうか。

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

これをやってみたのですが、間違った最適化バリアントになってしまいます。

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

目標は、最適化時に4つの確率パラメータ(Stoch, in_StochK, int in_StochD, int in_StochSlow)のバリアントを列挙できるようにすることです。

  • ストキャスティックスが有効な場合(Stoch = true)、オプティマイザは変数 in_StochK、in_StochD、in_StochSlow を列挙します。この部分ではすべてが正しく動作します。
  • ストキャスティックスがオフの場合(Stoch = false)、オプティマイザはin_StochK, in_StochD, in_StochSlowの変数を検索します。そして、Stoch = falseの場合は検索しないように、コード内に何らかのストッパーを作る必要がある。
 

こんにちは

おそらく

return(INIT_FAILED)

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

やあ、@taramortom

おそらく

私はそれを試してみました。うまくいかない。オプティマイザーはこのコマンドではまだ正しく動作しない。
 

おそらく、オプティマイザーが正しく動作しない原因は、このコードの不正確さにあるのだろう:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

おそらく、オプティマイザーが正しく動作しない原因は、このコードの不正確さにあるのだろう:


それが理由ではありません。動作ロジックの一例としてコードを作りました。フルバージョンのコードはサイズが大きすぎます。オプティマイザーを最適化する際、さまざまな組み合わせ(1つのオシレーターがオン、2つのオシレーターがオン、3つのオシレーターがオンなど)を試してもらいたいのです。

- このストッパーを使うと、オプティマイザーは、膨大な数のパスがあるはずなのに、少ないパス数で素早く作業を終えてしまいます。

- この制限を使わないと、オプティマイザはよりよく働きますが、たくさんの空の variant を生成します (上の例では、Stochastic がオフでもパラメータを検索します)。しかし、これは最適化のための余分な時間であり、有用なパスではなく空のパスです。

 
遺伝的最適化と完全最適化のどちらをお使いですか?
私も、明らかに不必要なパラメーターの組み合わせを除外するためにこの方法を使いましたが、オプティマイザーのパフォーマンスが正しくないということはありませんでした。それどころか、オプティマイザは期待通りに動作しました。
除外されたパラメーターの組み合わせをデータベースや共通ファイルに保存して、本当に除外されたパラメーターの数とその理由を確認することができます。
 

こんにちは!ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice)というMAに基づいたインジケータを書いています;

下の図のように、MAのレベルをプログラムで取得するにはどうすればよいでしょうか?

以下のような

IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

は機能しません。


 
Tango_X IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

は機能しない。


オプションはないのか?)

理由: