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

 

こんにちは、Mladenです。

ストキャスティックのコードに出会いました。しかし、それを自分のシステムに取り込むと何も起こりません。このコードが何をするものなのか、一緒に確認することはできますか?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

回答

テランス

 

...

ここに掲載されているものを試してみてください :https://www.mql5.com/en/forum/175297/page3

またはこちら:https://www.mql5.com/en/forum/177239/page2

テストしたところ、うまくいきました。

tkuan77:
こんにちは、Mladen。

私は、ストキャスティックであなたが行ったコードに出会いました。しかし、それを私のシステムに取り込んでも、何も起こりません。このコードが何をするものなのか、一緒に確認することは可能でしょうか?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

質問

テランス
 

これは不思議だ。

南京錠の問題をもう少し詳しく調べてみました。どうやらUAC(ユーザーアカウント制御)の設定に関係があるようなので、windows7のコントロールパネルでUACを完全にオフにしました。再起動したら、ファイルから南京錠が消えているのに気づきました。開いてみると、私がこのフォーラムに投稿したファイルと同じでした。同じファイルなのに、この数週間書いてきたコードとは全く違っています。私は、自分のコーディング作業をすべて失ったと思いました。UACをオンに戻して再起動すると、南京錠が戻り、私が書いたコードはまた元通りになりました。

しかし、そのコードをコンパイルしようとすると、たくさんのエラーを拾ってしまうのです。しかし、そのエラーはこのコードからではなく、UACをオフにしたときの全く別のコードからなのです-これは、他のコードでしか使われていない変数を拾っているのでわかります。

新しいEAを開いて、このコードをすべて手作業で入力して保存する必要がありそうです。

 

...

Windows7(の保護機能)の通常の問題です。

Windows7でそれを避ける最も簡単な方法は、Cとは別のパーティションにメタトレーダーをインストールすることで、その種の問題は発生しません。

crsnape@btinternet.com:
これは奇妙なことです。

南京錠の問題をもう少し詳しく調べてみました。どうやらUAC(ユーザーアカウント制御)の設定に関係するようなので、windows7のコントロールパネルでUACを完全にオフにしました。再起動したら、ファイルから南京錠が消えているのに気づきました。開いてみると、私がこのフォーラムに投稿したファイルと同じでした。同じファイルなのに、この数週間書いてきたコードとは全く違っています。私は、自分のコーディング作業をすべて失ったと思いました。UACをオンに戻して再起動すると、南京錠が戻り、私が書いたコードはまた元通りになりました。

しかし、そのコードをコンパイルしようとすると、大量のエラーを拾ってしまうのです。しかし、そのエラーはこのコードからではなく、UACをオフにしたときの全く別のコードからなのです-これは、他のコードでしか使われていない変数を拾っているからです。

新しいEAを開いて、このコードをすべて手作業で入力して保存する必要がありそうです。
 

やっとまともに動くEAができました。私は自分のコードをメモ帳にコピーし、UACをオフにして、新しいEAファイルに貼り付けました。そして、なぜ私の関数がおかしくなっていたのかがわかりました-私はint変数をnormalizeddoubleの中に入れていました。このようなことができないとは知りませんでしたが、今はできます-それを理解するのに1週間しかかかりませんでした!:/

とにかく、次のように書きました。

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (VariableRisk == false) Risk = StaticRisk;

そして、このように短縮できないかと考えていました。

if (VariableRisk == true)

{

Risk = GetRiskShort (LastOpenTicket, RiskShort);

else Risk = StaticRisk;

}

あと、こんなことも書いています。

//--- ロング時のテイクプロフィットポジションを 計算する関数

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit) { Double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

if (AutoCalcTakeProfit == true)

{

RefreshRates();

TPPriceLong = 注文開始価格() + ((注文開始価格() - SLPriceLong))* RiskRewardRatio);

Print("利食いポジションが正常に計算されました");

(TPPriceLong)を返します。

}

if (AutoCalcTakeProfit == false)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("静的テイクプロフィットポジションが正常に計算されました");

return (TPPriceLong)。

}

そして、このように短縮できないかと考えていました。

//--- ロング時の利食いポジションを計算する関数

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

RefreshRates();

if (AutoCalcTakeProfit == true)

{

TPPriceLong = 注文開始価格() + ((注文開始価格() - SLPriceLong))* RiskRewardRatio);

Print("利食いポジションが正常に計算されました");

else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("静的利食い位置が正常に計算されました");

return (TPPriceLong)。

}

そして最後の質問ですが、EAに柔軟性を持たせるために、タイムフレームを外部変数として定義したいのです。シグナルチャートはD1、トリガーチャートはH4とします。そこで、外部変数でこんなことができないか。

extern int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

そして、それを参照するには、例えば次のようにします。

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

 

この部分について:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1)とします。

そう、これは100%正しい使い方です(クローズドバーを使っている点まで(この例ではシフトが1に設定されています)、テストでクローズドバーを使うことによって、マルチタイムフレームでオープンバーを使う際の通常のトラップを回避しようとしているのです)。

crsnape@btinternet.com。
やっとまともに動くEAができました。このEAを作るために、私は自分のコードをメモ帳にコピーし、UACをオフにして、新しいEAファイルに貼り付けました。そして、なぜ私の関数がおかしくなっていたのかがわかりました-私はint変数をnormalizeddoubleの中に入れていました。このようなことができないとは知りませんでしたが、今はできます-それを理解するのに1週間しかかかりませんでした!:/

ともかく、こんなことを書いてみました。

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (VariableRisk == false) Risk = StaticRisk;

そして、このように短縮できないかと考えていました。

if (VariableRisk == true)

{

Risk = GetRiskShort (LastOpenTicket, RiskShort);

else Risk = StaticRisk;

}

あと、こんなことも書いています。

//--- ロング時のテイクプロフィットポジションを計算する関数

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit) { Double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

if (AutoCalcTakeProfit == true)

{

RefreshRates();

TPPriceLong = 注文開始価格() + ((注文開始価格() - SLPriceLong))* RiskRewardRatio);

Print("利食いポジションが正常に計算されました");

(TPPriceLong)を返します。

}

if (AutoCalcTakeProfit == false)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("静的テイクプロフィットポジションが正常に計算されました");

return (TPPriceLong)。

}

そして、このように短縮できないかと考えていました。

//--- ロング時の利食いポジションを計算する関数

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

RefreshRates();

if (AutoCalcTakeProfit == true)

{

TPPriceLong = 注文開始価格() + ((注文開始価格() - SLPriceLong))* RiskRewardRatio);

Print("利食いポジションが正常に計算されました");

else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("静的利食い位置が正常に計算されました");

return (TPPriceLong)。

}

そして最後の質問ですが、EAに柔軟性を持たせるために、タイムフレームを外部変数として定義したいのです。シグナルチャートはD1、トリガーチャートはH4とします。そこで、外部変数でこんなことができないか。

extern int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

そして、それを例えばこうして参照します。

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1)です。
 

こんにちは、私はエラーコード 4059を取得しています。

[TD]Function is not allowed in testing mode.

err_func_not_allowed_in_testing[/td] が表示されます。

4059

このような場合、どのように対処すればよいでしょうか?

 

このパラボリックサーのインジケーターに以下のコードを追加するのを手伝ってくれませんか?

Pip:
Mladenさん、ありがとうございます。

私は理解するためにあなたの投稿を再読します、正直なところ、私はそれを読んで少し迷いましたが、それは私の無知を取る可能性が最も高いです。 私は何かあれば質問を投稿します。

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

乾杯

ピップ

親愛なる友人へ。

あなたは、このパラボリックSARアラートparabolic_alert_mod.mq4INDICATORに 次のコードを追加するのに役立つことができる?

私はEAを探しているわけではありません。可能であれば、少なくともインジケータにSHIFTオプションを追加してください。

extern double TakeProfit = 50;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double SAR_Step = 0.02;

extern double SAR_Maximum = 0.2;

extern double Shift=1;

ファイル:
 

...

ジョエル・ネルソン

TakeProfit、Lots、TrailingStopはパラボリックサーの計算方法とは関係ありません(これらのパラメータは明らかにサーを使っているEAから取得したものです)。そのため、EAでない場合、これらのパラメータを意味ある形で追加することは不可能です。

また、パラメータのシフトは、テストされたバーを参照しています(パラボリックSARは移動平均が通常シフトすることができるので、シフトしません)これらのパラメータは、おそらく組み込みのSARへの呼び出しのためのものであり、組み込みのSARは次の形式を有しています。

double iSAR([/TD] [TD]string symbol,int timeframe,double step,double maximum,int shift)

この場合、シフト1は、パラボリックサーの最初のクローズドバーの値をテストするために使用されます。

joelnelson:
親愛なる友人へ

あなたは、このパラボリックサーの警告parabolic_alert_mod.mq4INDICATORに 次のコードを追加するのに役立ちますすることができますか?

私はEAを探しているわけではありません。可能であれば、少なくともインジケータにSHIFTオプションを追加してください。

extern double TakeProfit = 50;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double SAR_Step = 0.02;

extern double SAR_Maximum = 0.2。

extern double Shift=1;
 

...

このエラーは、いくつかの関数で返されることがあります。

テストでそのエラーを引き起こす可能性のある関数は、以下の通りです。

マーケット情報

メッセージボックス

送信FTP

メール送信

WindowIsVisible

ウィンドウの検索

ウィンドウハンドル

そのため、上記の関数のいくつかを呼び出すと、次のようなエラーが発生しました。

crsnape@btinternet.com:
こんにちは、私はエラーコード4059を取得しています。[TD]Function is not allowed in testing mode.
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]4059
Iveは検索を行いましたが、カントはそれが何を意味するのかについての詳細な情報を見つけることができますか?