[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 495

 
日安!告诉我。比方说,我打算用
double iMA(     string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

在帮助中,它说的是时间框架--时期。可以是一个图形的 一个时期。0表示当前图形的周期。

能否,或者说是否一定是图的时期?但如果我投入20而不是15呢?是用数字好还是用PERIOD_M15好?

好吧,我把0放在那里,不打扰了。

 

大家好。如果有人能在这个指标中插入一个声音,我将非常感激。

即,当有一个交叉的....当然,这种声音应该只在发生这种交叉的蜡烛收盘时发出一次。

提前感谢您的帮助。

附加的文件:
 
Dimka-novitsek:
日安!告诉我。比方说,我打算用

在帮助中,它说的是时间框架--时期。可以是一个图形的一个时期。0表示当前图形的周期。

能否,或者说是否一定是图的时期?但如果我投入20而不是15呢?是用数字好还是用PERIOD_M15好?

好吧,我把0放在那里,不打扰了。

期限是以分钟为单位设置的。例如,60是一个小时,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的 功能,可以返回最后一笔平仓订单的缩减/盈利金额。

这个想法很简单:你需要跟踪在最后一个关闭的订单中,利润或缩水的存款货币是多少。

该算法如下:寻找任何返回关于最后一个封闭订单的任何函数。获取最后一个关闭订单的票据。循环结束后,你通过获得的票据选择一个订单,并计算其利润(如果它是重要的,不要忘记在计算时考虑掉期和佣金)。

    Profit = OrderProfit() + OrderSwap() + OrderCommission();
 
TarasBY:
你的图表上是否有一条名为 "条 "的趋势线?如果你有这样一条线,那么这条线很有可能位于你所指的价格之外。

谢谢你,是的,我指定了错误的行值。现在我知道问题出在哪里了。

 
Zhunko:
运行它,看一看。这是一个相当有用的 "工具包"。

我可以看到,"狗 "和它之间的空格是用来显示一个数字的。但为什么会发生这种情况呢?这不是来自于mql编程的东西吗?C语言中是否有这样的东西?

我不太明白为什么会发生这种情况。而且我也不太清楚它的产出。我在一些级别看到了通过 "狗 "的菲波数字,而在一些级别看到了其他东西?

你能解释他们出现的原因吗?我已经变得非常好奇了。但我在第二天打开它时,并没有理解它。

我将复制脚本代码,以避免在历史中搜索它。

//+------------------------------------------------------------------+
//|                              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个小节内,如果这个条件被重复,那么另一个交易(重复)就会被打开。如果在接下来的三个柱子内,我需要的条件没有得到满足,那么交易就不应该再打开,直到下一次交易将再次打开。以此类推。由于某些原因,我只重新打开了一次(我的意思是,当所有的条件都满足一般的第一次 - 它打开,但此后,当新的领先交易出现后,打开重复交易的条件 - 它没有打开)。请给予帮助。

//условие открытия повторной сделки
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;
    }

}