モラニスの誤植は? - ページ 3

 

RJo:

とはいえ、SBの欠陥のあるmq4で 機能するex4はまだ見たことがないんです。

あなたは、欠陥のあるmql4コードを投稿しています..モラニスはEAビルダーと変わらないようですね。
 
RJo:


ああ、だから...コンピュータは取引に最適だから、人間は排除されるべきなんだ。


いや...コンピュータはAutomated Tradingで最高なんだ;)
 
RaptorUK:
あなたは欠陥のあるmql4コードを投稿しています..MolanisはEA Builderと変わらないようですね。


"欠陥 "とは、ex4ファイルがmq4よりも高機能 であるというような相対的な意味です。最初の投稿にあるように、私はコーダーではありません。イヤーな感じです。具体的な診断ありがとうございました。そうそう...なかったんですね。

 
RJo:


"欠陥 "とは、ex4ファイルがmq4よりも高機能であるというような相対的な意味です。最初の投稿にあるように、私はコーダーではありません。イヤーな感じです。具体的な診断ありがとうございました。そうそう...なかったんですね。

WHRoederが既に出したものと重複する必要はないのですが... .
 
JDeel:

アセンブラでプログラミングを始めてみませんか?マシン・コードの次に低いレベルで、すべてをコントロールすることができる。確かに、それを学ぶにはより多くの努力が必要ですが、私たちは確実に、とても小さくて超最適化されたコードを手に入れることができるのです。これって、すっごくすごいことだと思いませんか、みなさん?

デブライス、モラニスは私のツールではないし、それを使ってEAを作ったこともない。しかし、あなたはEAビルダーのファンではないようなので、決してEAビルダーで作業しようとしないようにアドバイスします。MQL4/MQL5を使うことは禁じられていません。ピンクが一番好きな人、ブルーが一番好きな人がいる。昔からそうだったし、これからもそうだろう。


私の言葉を変えないでください...。私が書いたツールを使ってExpert Advisorを正しくコード化できることを証明してくれ。それでも私は...

私はMolanisがあなたのツールだと書いたことはありません。EABuildersでググると他にも出てきますよ。もしかしたら、NoProgra Builderのユーザーかもしれませんし...。

MetaTrader4用のEAを正しくコード化できるツールだと思うのなら、そのビルダーで証明すればいいのです。

しかし、EABuilderを使うようにアドバイスしたり、それを使うように宣伝したりする人もいます。

もし、あなたが何か製品を宣伝したいのなら、その製品が良いものであることを証明する必要があります。

そして、私はまだそれをやって成功した人を見たことがない...。

これらのツールの大きな欠点は、ツールで製品が作れるなら、mq4の基本を知る必要はない、と考える人が出てくることです。

しかし、そのツールでどのような品質が得られるのかがわからない。あるいは、インターネットで入手できるプログラム(無料、無料でないにかかわらず)のエラーに気づかない。

 
RJo:

具体的な診断結果をありがとうございました。そうそう......なかったんですね。

具体的な例をあげますね.

int CLOSELONG(string symbol_c) {
 CloseAllPositions(symbol_c,OP_BUY,MagicNumberLong);
 CloseAllPositions(symbol_c,OP_BUY,MagicNumberLong);
 return(0);
}

//CLOSESHORT closes short positions
/*
*** Generated with Molanis Strategy Builder 3.1 ***
*** www.molanis.com ***
*** Released 2010-02-20 ***
*/
int CLOSESHORT(string symbol_c) {
 CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
 CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
 return(0);
}

この2つのFunctionsは 同じ関数を2回呼び出します.CloseAllPositionsは、1回目はLongs、2回目はShortsのために呼び出されます。

そのため、Molanis社では、いくつかのポジションが開いたままになっている理由を理解するのではなく、修正方法を考え出したのです。

 

RJoさん、Molanisのコードを掲載してくれてありがとうございます。モラニスとEA SBのユーザーは幸せなユーザーだと思う、彼らがmqlを学ぶまでは、そしてその時には、モラニスとEA SBを全く違った視点から見ることになるだろう。

私は、Molanis/EA SBを守るよりも、まず自分のお金を守る方が良いと思う。)

 
RJo:
Indiです。


コードを投稿していただきありがとうございます....

WHRoederがエラーを素早く指摘するように、私はそうではないし、それは再びそれを言うために意味を持ちません。

しかし、あなたがコードを書く方法を知らない場合は、あなたがここに見る他の何かを行うことができます....

.

私は、指標の動作を確認するためにテストを行い、それはまた、2つの画像を作った警告のいくつかの種類を与える

2012年1月1日からの1分足でのテスト(EAが取引しないようにする)。

この写真ではインジケータのテスト前の挙動を見ることができます。

そしてテスト開始時の動作

この動作は、インジケータを使用していないEAをテストに入れた場合にも見られます。

.

全く違う挙動に見えますが、これはインジケーターを使用する前に、コードや挙動をよく見ておくようにという警告でもあります。

.

このインジケータのコードは、「...」で始まるので、モラニスが作ったものではなさそうです。

// This is Not Tested , Use At Your Own Risk !

//+--------------------------------------------------------------------------+
//| 3 MA Cross w_Alert v2.mq4                                                |
//| Copyright © 2005, Jason Robinson (jnrtrading)                            |
//| http://www.jnrtading.co.uk                                               |
//| 3 ma conversion and Alert , David Honeywell , transport.david@gmail.com  |
//| http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ |
//+--------------------------------------------------------------------------+

/*
  +-------------------------------------------------------------------------------+
  | Allows you to enter 3 ma periods and it will then show you and alert you at   |
  | which point the 2 faster ma's "OPEN" are both above or below the Slowest ma . |
  +-------------------------------------------------------------------------------+
*/   

このインジケータのエラーは、未来計算をしていることだと思う。

   for(i = 0; i <= limit; i++)
    {
      
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
       {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
       }
      Range=AvgRange/10;
       
      fasterMAnow      = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+1);
      fasterMAprevious = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i+2);
      fasterMAafter    = iMA(NULL, 0, FasterMA, FasterShift, FasterMode, PRICE_CLOSE, i-1);
      
      mediumMAnow      = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i+1);
      mediumMAprevious = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i+2);
      mediumMAafter    = iMA(NULL, 0, MediumMA, MediumShift, MediumMode, PRICE_CLOSE, i-1);
      
      slowerMAnow      = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i+1);
      slowerMAprevious = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i+2);
      slowerMAafter    = iMA(NULL, 0, SlowerMA, SlowerShift, SlowerMode, PRICE_CLOSE, i-1);
i = 0 " のとき " i-1 " は未来......。
 
WHRoeder:

Ichi_Cloud_EA.mql4(順不同

  1. Market_info で計算するのではなく、外部で Is_micro_account を計算する。
  2. micro_account と NormalizeDouble を使用すると、lotStep が 0.1 または 0.01 であると仮定します。他のブローカー定義の 値は使用できません。
  3. 計算するのではなく、外部のFiveDigitsを使用する。3か5で標準ペア、jpy系ペアを許可するテストのみ。金属を取引するのはFAIL。なぜ、無効な設定でのテストなのか。
  4. グローバルなPipMultiplierは、チャート変更時に決して リセットバックされません。
  5. 多くの外部ブールは、ストラテジーテストができない。
  6. 2つのマジックナンバーを使用する理由がない。
  7. TradingStartTimeとTradingEndTimeの間の時間帯にのみ取引される。真夜中以上の時間を設定することはできない (例:2000年開始、0600年終了、つまりシドニーセッションのみ)
  8. PreviousBarCount==Barsを使用。Bars inunreliable (max bars in chart) Volume is unreliable (you can miss ticks) always use time.
  9. Close[1]の代わりにiClose(Symbol(),0,1)を使用。
  10. Init Slippage = Slippage*PipMultiplier; つまり、チャート(ペアや時間枠)を変えるたびにSlippageが3 、30、300、3000と増えていく!!!
  11. magiccondや他のboolを使用 if (condition) boolVar= true; else boolVar = false; when it could use the simplier boolVar = condition;
  12. 値をキャッシュしない if (iClose() <> iCustom()) 全く同じiCloseとiCustomのコールが4回以上呼び出された場合。
  13. 閉じながらカウントアップし、関数を2回呼び出す。カウントアップするということは、1つおきのオーダーを見逃すということです。関数を2回呼び出すということは、4つ以上の未決済注文で失敗 することを意味します。常にカウントダウンしてください。
  14. 「M-ERROR : Expiration has to be at least 1 minute." この有効期限は10分以上であるべき だ!という投稿が あったばかりだ。
  15. 保留注文の場合、Normaliszedouble(price, Digits)を呼び出すが、ticksize != Pointの場合、動作 しない。

10の件が一番気になったので、まず調査してみました。モラニスに巨大なサポートリクエストを書いている最中に、これを見つけました。

EAのコードで使われているSlippageは、外部整数変数(extern int)です。

「init()の実行前に、外部変数はユーザーが設定ツールバーで設定した値を取得し、init()の実行時に、外部変数はユーザーが設定した新しい値を持つことになります。したがって、外部変数の新しい値は、init()の実行から始まるExpert Advisorの新しいセッション(init - start - deinit)の瞬間から有効になります。"(https://book.mql4.com/variables/types) とあります。

つまり...グローバル変数はinit()実行時に古い値を優先して無視されるのが一般的ですが、外部変数はinit()実行時に更新されるようです。スリッページは何度チャートを変えても3(あるいは私が設定した値)のままです。このEAはこのように設計されているのだと思います。

 
RJo:
つまり、グローバル変数は一般的に無視され、init()の実行時に古い値が優先されますが、外部変数はinit()の実行時に更新されるようです。

何度チャートを変えてもスリッページが3(もしくはこの設定値)のままです。このEAはこのように動作するように設計されていると思います。

WRONG 投稿したリンク(https://book.mql4.com/variables/types) をわざわざ読んだ のですか? "Global variables areinitialized only once before stating the execution of special functions." と書いてありますね。

グローバル変数と静的変数はEAがLOADされたときに設定され、deinit/initサイクル中には設定されません。

Slippage = Slippage * 10 の直後に print 文を追加して実行し、チャートまたは時間枠を変更してログを見てみてください。