[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 495

 
ごきげんよう。教えてください。を使うとしよう。
double iMA(     string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

ヘルプには、Timeframe - Periodと書かれています。グラフの周期の 1つである可能性がある。0は現在のグラフの周期を意味します。

できるのか、グラフの周期は間違いないのか?でも、15ではなく20を入れたらどうでしょう?数字を使うのがいいのか、PERIOD_M15がいいのか。

OK、私はそこに0を置き、気にしないようにします。

 

皆さん、こんにちは。どなたか、このインジケーターに音を入れていただけるとありがたいです。

I.e.交差があるとき..........................。そしてもちろん、この音はこの交差が起こったローソクの終値で一度だけ鳴らすべきです。

よろしくお願いします。

ファイル:
 
Dimka-novitsek:
ごきげんよう。教えてください。を使うとしよう。

ヘルプには、Timeframe - Periodと書かれています。グラフの周期の1つである可能性がある。0は現在のグラフの周期を意味します。

できるのか、グラフの周期は間違いないのか?でも、15ではなく20を入れたらどうでしょう?数字を使うのがいいのか、PERIOD_M15がいいのか。

OK、私はそこに0を置き、気にしないようにします。

期間は分単位で設定する。例えば、60は1時間、240は4時間...。など、5がM5です。
 

KimIVの 機能で、最後に決済した注文のドローダウン/利益額を返す機能が見つかりませんでした。

考え方は簡単で、最後に決済した注文で、利益またはドローダウンが入金通貨で いくらだったかを追跡する必要があるのです。

 
fmillion:

KimIVの 機能で、最後に決済した注文のドローダウン/利益額を返す機能が見つかりませんでした。

考え方は簡単で、最後に決済した注文で、利益またはドローダウンが入金通貨でいくらだったかを追跡する必要があるのです。

このデザインは、私にとって有効です。

//---Поиск крайнего отработавшего ордера для открытия очередной позиции ---   
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY)) {Print("Ошибка при доступе к исторической базе (",GetLastError(),")");continue;}   
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))  continue;              
   //------------------------- Принимаем в расчет только ордер, закрытый cамым крайним -----------------------
      if (time<OrderCloseTime())     //(сравниваем его с хранящимся в пероеменной time) 
        {
         time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную     
         int lastType = OrderType();
         double lastLots = OrderLots();
         double lastProfit = OrderProfit() + OrderSwap();
         
         // Анализ только что закрывшегося ордера      
         if (lastProfit >= 0.0)
         {
...
 
Roman.:

そんなデザインに仕上がっています。

そして、ループの最初にある時間 変数は何に相当するのでしょうか?
 
fmillion:

KimIVの 機能で、最後に決済した注文のドローダウン/利益額を返す機能が見つかりませんでした。

考え方は簡単で、最後に決済した注文で、利益またはドローダウンが入金通貨でいくらだったかを追跡する必要があるのです。

アルゴリズムは以下の通りです:最後に閉じた順番に関するあらゆるものを返す関数を探します。その最後に閉じた注文のTicketを取得する。ループが終了したら、取得したTicketで注文を選択し、その利益を計算する(重要であれば、計算時にスワップや手数料を考慮することを忘れてはならない)。

    Profit = OrderProfit() + OrderSwap() + OrderCommission();
 
Zhunko:
走らせて見てください。なかなか便利な「キット」ですね。

犬」とその間のスペースは、数字を表示するために使われていることがわかりますね。しかし、なぜこのようなことが起こるのでしょうか。mqlのプログラミングではないものなのでしょうか?C言語ではそのようなことはないのでしょうか?

なぜそうなるのか、よくわからないんです。そして、それが何を出力しているのかもよくわからない。私は "犬 "を介していくつかのレベルでFiboの数字を参照してください、そしていくつかのレベルで何か他のもの?

その理由を教えてください。とても気になる存在になりました。しかし、2日目に開けてみて、よくわからなかった。

履歴から探さないように、スクリプトコードを複製しておきます。

//+------------------------------------------------------------------+
//|                              Brooky_FibIt_Retracement_Script.mq4 |
//|                        Copyright 2012, www.Brooky_Indicators.com |
//|                                        www.Brooky_Indicators.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, www.Brooky_Indicators.com"
#property link      "www.Brooky_Indicators.com"
#property show_confirm  
#property show_inputs
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+

extern int       FibOnChartNum =1;

extern color     Fib_Cbar_Color = Red;
extern int       Fib_Cbar_Size=1;
extern int       Fib_Cbar_Style=2;

extern color     Fib_Level_Color = Gray;
extern int       Fib_Level_Size=1;
extern int       Fib_Level_Style=2;

extern double     Fib_Level_1 = 0;
extern double     Fib_Level_2 = 0.236;
extern double     Fib_Level_3 = 0.382;
extern double     Fib_Level_4 = 0.5;
extern double     Fib_Level_5 = 0.618;
extern double     Fib_Level_6 = 0.764;
extern double     Fib_Level_7 = 1;

string Xtra_txtFib_Level_1  = "Extreme ";
string Xtra_txtFib_Level_2  = "Break OUT ";
string Xtra_txtFib_Level_3  = "Break IN ";
string Xtra_txtFib_Level_4  = "Centre ";
string Xtra_txtFib_Level_5  = "Break IN ";
string Xtra_txtFib_Level_6  = "Break OUT ";
string Xtra_txtFib_Level_7  = "Extreme ";


string txtFib_Level_1  = "";
string txtFib_Level_2  = "";
string txtFib_Level_3  = "";
string txtFib_Level_4  = "";
string txtFib_Level_5  = "";
string txtFib_Level_6  = "";
string txtFib_Level_7  = "";


string FibPrice = " @ %$";
string FibPrice1 = " ";
string FibName = "";

int start()
  {

//----
      txtFib_Level_1 = StringConcatenate(Xtra_txtFib_Level_1,DoubleToStr(Fib_Level_1,3),FibPrice1);
      txtFib_Level_2 = StringConcatenate(Xtra_txtFib_Level_2,DoubleToStr(Fib_Level_2,3),FibPrice);
      txtFib_Level_3 = StringConcatenate(Xtra_txtFib_Level_3,DoubleToStr(Fib_Level_3,3),FibPrice1);
      txtFib_Level_4 = StringConcatenate(Xtra_txtFib_Level_4,DoubleToStr(Fib_Level_4,3),FibPrice);
      txtFib_Level_5 = StringConcatenate(Xtra_txtFib_Level_5,DoubleToStr(Fib_Level_5,3),FibPrice1);
      txtFib_Level_6 = StringConcatenate(Xtra_txtFib_Level_6,DoubleToStr(Fib_Level_6,3),FibPrice);
      txtFib_Level_7 = StringConcatenate(Xtra_txtFib_Level_7,DoubleToStr(Fib_Level_7,3),FibPrice);
      
      
      
      FibName = "Brooky_FibR_"+FibOnChartNum;
      ObjectDelete(FibName);
      
      ObjectCreate(FibName,OBJ_FIBO,0,Time[21],High[24],Time[1],Low[1]);
      
      ObjectSet(FibName, OBJPROP_COLOR,Fib_Cbar_Color);
      ObjectSet(FibName, OBJPROP_WIDTH ,Fib_Cbar_Size);
      ObjectSet(FibName, OBJPROP_STYLE ,Fib_Cbar_Style);
      
      ObjectSet(FibName, OBJPROP_RAY,True);
       
      ObjectSet(FibName, OBJPROP_LEVELSTYLE,Fib_Level_Style);
      ObjectSet(FibName, OBJPROP_LEVELCOLOR,Fib_Level_Color);      
      ObjectSet(FibName, OBJPROP_LEVELWIDTH,Fib_Level_Size);  
       
          
      ObjectSet(FibName, OBJPROP_FIBOLEVELS,7);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+0,Fib_Level_1);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+1,Fib_Level_2);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+2,Fib_Level_3);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+3,Fib_Level_4);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+4,Fib_Level_5);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+5,Fib_Level_6);
      ObjectSet(FibName, OBJPROP_FIRSTLEVEL+6,Fib_Level_7);
      

     
      ObjectSetFiboDescription(FibName,0,txtFib_Level_1);
      ObjectSetFiboDescription(FibName,1,txtFib_Level_2);
      ObjectSetFiboDescription(FibName,2,txtFib_Level_3);
      ObjectSetFiboDescription(FibName,3,txtFib_Level_4);
      ObjectSetFiboDescription(FibName,4,txtFib_Level_5);
      ObjectSetFiboDescription(FibName,5,txtFib_Level_6);
      ObjectSetFiboDescription(FibName,6,txtFib_Level_7);      
      
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

友よ、私は簡単な問題にぶつかったが、なかなか解決できない。そのエッセンスは以下の通りです。一定の条件を満たすと、取引が開始される(リードトレードと呼ぶことにする)。そして、この条件が繰り返された場合、次の3バー以内に別の取引を開始する(繰り返す)必要があります。次の3バー以内に私が必要とする条件が満たされない場合、次に再び取引が開始されるまで、取引は開始されないはずです。といった具合に。私は、なぜか1回だけ開き直すことがあります(つまり、一般的に初回にすべての条件が揃ったときに開くのですが、その後、新しい先行ポジションの後にリピート取引の開始条件が現れると、開かなくなります)。助けてください。

//условие открытия повторной сделки
for (povtor_up=1;povtor_up<4;povtor_up++)
if ((povtor_buy==1) && (adx_cont==1)&&(sb==1))
{
  CL = iClose(NULL,0,1);
  stop = CL - SLP*Point;
  raz_up = (CL - frac_down);
  take_1 = 0;
  take_2 = 0;
  if (CL<(frac_up-FR_OVER*Point))
  take_1 = (CL + raz_up*MNP_1);
  if (CL>=(frac_up-FR_OVER*Point))
  take_2 = (CL + raz_up*MNP_2);
  if (take_1>0)
  {
  take_1n = NormalizeDouble(take_1,5);
  take = take_1n;
  }
  if (take_2>0)
  {
  take_2n = NormalizeDouble(take_2,5);
  take = take_2n;
  }

    if(!IsTradeAllowed())
      {
      Alert("занят торговый поток, повторим попытку buy");
      return(-1);
      }
  ticket_buy_cont=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,stop,take,com,Magic,0,Yellow);
    if(ticket_buy_cont == -1)
    {
    Alert(Symbol(),"ошибка:buy", GetLastError());
    return(-1);
    }
    if(ticket_buy_cont > 1)
    {Alert (Symbol(),"buy повтор - ок !");
    povtor_buy=0;
    povtor_up=0;
    }

}
else 
    povtor_buy=0;
    povtor_up=0;


//условие открытия ведущей сделки
if ((adx_ts==1) && (sb==1) && (FLAG==0))
{
  CL = iClose(NULL,0,1);
  stop = CL - SL*Point;
  raz_up = (CL - frac_down);
  take_1 = 0;
  take_2 = 0;
  if (CL<(frac_up-FR_OVER*Point))
  take_1 = (CL + raz_up*MN_1);
  if (CL>=(frac_up-FR_OVER*Point))
  take_2 = (CL + raz_up*MN_2);
  if (take_1>0)
  {
  take_1n = NormalizeDouble(take_1,5);
  take = take_1n;
  }
  if (take_2>0)
  {
  take_2n = NormalizeDouble(take_2,5);
  take = take_2n;
  }

    if(!IsTradeAllowed())
      {
      Alert("занят торговый поток, повторим попытку buy");
      return(-1);
      }
  ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,stop,take,com,Magic,0,Yellow);
    if(ticket_buy == -1)
    {
    Alert(Symbol(),"ошибка:buy", GetLastError());
    return(-1);
    }
    if(ticket_buy > 1)
    {Alert (Symbol(),"buy при начале - ок !");
    FLAG=1;
    povtor_up=1;
    povtor_buy=1;
    }

}
 
Big_Bo:

友よ、私は簡単な問題にぶつかったが、なかなか解決できない。そのエッセンスは以下の通りです。一定の条件を満たすと、取引が開始される(リードトレードと呼ぶことにする)。そして、この条件が繰り返された場合、次の3バー以内に別の取引を開始する(繰り返す)必要があります。次の3バー以内に私が必要とする条件が満たされない場合、次に再び取引が開始されるまで、取引は開始されないはずです。といった具合に。私は、なぜか1回だけ再開しています(つまり、一般的に初回にすべての条件を満たした場合 - 開きますが、今後、新しい先行ポジションの後にリピートトレードを開く条件が現れた場合 - 開かないのです)。助けてください。

EAが動作中にリロードされることがある(もちろんテスターでない場合)ことを忘れないでください(あるいは慣れるように)。注文を「把握」しやすくなりました。もし、オーダーに違いがあれば(この場合、マスターとスレーブ)、マグが違うとか、コメントに記録があるとか、1番目のオーダーの後に2番目のスレーブが開くとか(心のおもむくままに)区別することができます。

コードをユーザー定義関数に分離することで、読みやすく、理解しやすくする:オープンコンディション(シグナル取得)を別々に、STOP取得を別々に、注文を別々に行う。このループの意味は全く不明である。

    for (povtor_up = 1; povtor_up < 4; povtor_up++)

もし、それが「次の3小節以内」というチェックであれば、私はこの人生で何かを見逃していたことになる...。

最初の「マスター」オーダーの開始時刻 がありますね、それを目安にしてください。