MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1777

 
MakarFX #:

そうだ、お前は散らかしたんだ)

ここで、それぞれのフォルダで、一つずつ、Expertsフォルダを_Expertsに、Indicatorsフォルダを_Indicatorsに リネームしてください。

あるフォルダーで名前を変更-ターミナルを起動し、それが役に立たなかった場合-名前を戻して、次のフォルダーに移動します。

追伸:初回は通常より少し長く端末が起動します。

マカー!

今日、その出来事があった。そのため、日付の古いフォルダは触らないようにしました。

また、フレッシュフォルダに変更を加えても、何も変わりませんでした。

そこで、プロファイル、インジケータ、Expert Advisorを別の端末にドラッグしてみました。やっとの思いでガチャガチャを完成させました。

これですべてがうまくいく。私は別の端末で持っていますが。でも、大事なのは結果であって、仕事ができることです。

その端末は後で削除します。

エディターからインジケーターやプロファイルを探すという提案は完璧だと思いますね。

特に私のようなプログラミングの "ド素人 "にとっては。

この度は大変お世話になり、ありがとうございました!対応も丁寧でした。

がんばってください。

リーザーズ!(笑

 

皆さん、こんにちは。私は緑よりも緑であることを一度に言うために、この上のすべてを理解し始めたところです。私はどのくらいの時間を持っているかわかりませんが、私はいくつかの経験を得るでしょう。 あなたはこの状況に直面している人を教えてもらえますか? 私は次の10ポイント上下とオープン買いや売りで監視するスクリプト またはコードが必要です。

1...例えばダニが来た - コードは、次の10ポイントダウンと(または)最大順序でない場合は、次に売り注文を設定します見てください。また、買い注文の場合

以下は、Forex EA Generatorの スキーム 例です。



ファイル:
hktrabmcw4.jpg  222 kb
 
valentin104 スクリプト またはコードを必要としています。

1....例えばダニが来た - コードは、次の10ポイントダウンと(または)アップの順序でない場合は、売り注文を設定 します。また、買い注文の場合

以下は、Forex EA Generatorの スキーム 例です。



この方式は馬鹿げてる。

 
Artyom Trishkin #:

バカげた計画だ。

いや、ifとelseがないとそう見えますね)。でも、そういう意味じゃないんです。

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

スクリプトでは tick_s =1.0 tick_vflue =80.32786885245902 ですが、owl では tick_value =80.37529660186777 tick_size =1e-05 となっています。

スコアが崩れる。




 
Artyom Trishkin #:

バカげた計画だ。

的外れなこと言ってますね。

valentin104 #:

やあ、みんな。私はまだ理解できたばかりなので、これくらいにしておきます。 グリーンよりグリーンなんです。

 
Galim_V #:

いや、ifとelseがないとそう見えますね)。でも、そういう意味じゃないんです。

スクリプトでは tick_s =1.0 tick_vflue =80.32786885245902 で、owl では tick_value =80.37529660186777tick_size =1e-05 となります。

tick_valueが壊れている。




tick_size =1e-05

DoubleToString(tick_size , 2 ) を正規化する。

 
MakarFX #:

tick_size =1e-05

DoubleToString(tick_size , 2 ) を正規化する。

ゼロが一人で。100分の1もない。

//+------------------------------------------------------------------+
//|                                                     MAX+risk.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property script_show_inputs
enum Mani
  {
   free_margin,
   balans
  };
input Mani risk_mani;
input double Lot=0.0;
input int max_risk =0; //В% от свободных средсв или...
input int stoploss=300;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double Lots=0;
   int    Max_Risk=0;

   printf("ACCOUNT_MARGIN_FREE =  %G",AccountInfoDouble(ACCOUNT_MARGIN_FREE)); //Размер свободных средств на счете  в валюте
   printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE)); //Баланс счета в валюте депозита
   printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));    // Уровень залоговых средств в %

   double freemani=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   double balance=AccountInfoDouble(ACCOUNT_BALANCE);
   double tick_s =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)/_Point;  //Минимальное изменение цены
   double tick_value= SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);//Размер минимального изменения цены инструмента в валюте депозита
   if(risk_mani==balans)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= balance*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_BALANCE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/balance*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   if(risk_mani==free_margin)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= freemani*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_MARGIN_FREE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/freemani*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   Print("Lots =",Lots," Max_Risk =",Max_Risk," tick_s =",tick_s," tick_vflue =",tick_value);
  }
//+------------------------------------------------------------------+

ここで働く。掲示板では、関数の代わりに変数を。しかし、すでに最初からこの関数はOnTick()で無意味なものを生成しています。

 
Galim_V #:

すべてゼロ。100分の1も見つからなかった。

ここで働く。owlでは、関数の代わりに変数を使用します。しかし、この関数はOnTick()の中ですでに無意味なものを生成しています。

見つけた。すみません。tick_size =1e-05 の 値は0.00001 であり、正しい 値です。

 
valentin104 #:

さっそくですが、私は緑よりの緑です。いつまで 続くかわからない。


このようなアプローチでプログラミングを学ぶのであれば、プログラマーを雇った方が良いし、心配もない。

 

標準的なZigZagインジケータがありますが、その線の描画スタイルはDRAW_SECTIONです。つまり、インジケータバッファの 値の大部分は EMPTY_VALUEに等しく、時々この値とは異なる値(ブレークポイント)があるため、線を描画することができます。このインジケーターやそのコードは、誰もが一度は目にしたことがあると思います。

タスクは、最後のブレークポイントに対応する値、すなわち、EMPTY_VALUEに等しくないインジケータバッファの最新の値を取得することです。

質問:インジケータバッファの値をゼロシフトから下に向かってループさせ、得られた値がEMPTY_VALUEと異なるまで、反復ごとにiCustom関数を呼び出すのは正しいアプローチでしょうか?

それとも、この値を得るために何か簡単な方法があるのでしょうか?