新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1343

 
Forallf:
中间是以我为例。将有一个不同的、经过计算的水平。

任何级别都可以在那里设置,而且数量不限。

 
Andrey Sokolov:

你好。你能告诉我如何计算投标价格吗?

我如何计算一个买入价,即几个买入头寸的总利润为零的货币对,其中基础(第一)货币是美元,而点值不是恒定的,取决于价格?

对于以美元为报价(第二)货币且点值为常数的货币对,我得出了这个函数。

将有助于你)
 
DanilaMactep:
非常感谢你注意到并告诉我,我修复了它,在2年的测试中,有26个错误130。同时,有115笔交易正常开启

如果挂单与当前价格的距离小于STOPLEVEL,将出现错误 130

这就是为什么给你这个代码 的原因

或如果你必须以某种其他方式考虑到它

MarketInfo(_Symbol, MODE_STOPLEVEL);
 
你好!需要代码在开盘后一定时间(24小时,48小时)后关闭市场订单。时间应该是可以调整的。
 
Max330:
你好,我需要代码在开盘后的一定时间内关闭市场订单(24小时,48小时)。时间应该是可以调整的

像这样

for(int pos=OrdersTotal()-1;pos>=0;pos--)
    if(OrderSelect(pos,SELECT_BY_POS)==true)
       if(OrderSymbol()==_Symbol)
         if(TimeCurrent()-(определенное время в секундах) >= OrderOpenTime()) 
            OrderClose(order_id,1,Ask,3,Red);
 
MakarFX:
将有助于你)

不幸的是,这并没有帮助。这个一般是以开盘价为指导

 
Andrey Sokolov:

不幸的是,这并没有帮助。这个一般是以开盘价为导向。

那么我不明白你需要什么。

安德烈-索科洛夫

如何计算几个买入头寸的总利润为零时的买入价?

即收支平衡?

 
MakarFX:

那么我不明白你想要什么。

也就是收支平衡?

计算一个或多个单向订单的收盘价(买入价),其总利润+储蓄+佣金==0。

这个问题发生在基础货币为 美元,而点值变化的货币对中。

 
Forallf:
中间是以我为例。将会有另一个经过计算的水平。

该指标为任何数量的趋势线画 出中间。

#property version   "1.00"
#property strict
#property indicator_chart_window

string symbol;
ENUM_TIMEFRAMES frame;
int digits;

long ChartId;
int Window;

datetime time1, time2;
double price;

int OnInit()
   {
   //идентификатор графика и номер окна индикатора
   ChartId=ChartID();
   Window=0;
   symbol=Symbol();
   frame=(ENUM_TIMEFRAMES)Period();
   digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   ChartSetInteger(ChartId,CHART_EVENT_OBJECT_CREATE,true);
   return(INIT_SUCCEEDED);
   }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {

   return(rates_total);
   }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
   {
   if((id==CHARTEVENT_OBJECT_CREATE || id==CHARTEVENT_OBJECT_DRAG) && ObjectGet(sparam,OBJPROP_TYPE)==OBJ_TREND && StringFind(sparam,"Middle")==-1)
      {
      price=(ObjectGet(sparam,OBJPROP_PRICE1)+ObjectGet(sparam,OBJPROP_PRICE2))/2;
      time1=GetPointTimeOnStraight((datetime)ObjectGet(sparam,OBJPROP_TIME1),ObjectGet(sparam,OBJPROP_PRICE1),(datetime)ObjectGet(sparam,OBJPROP_TIME2),ObjectGet(sparam,OBJPROP_PRICE2),price,symbol,frame);
      time2=time1+PeriodSeconds(frame)*10;
      RedrawLine(ChartId,Window,sparam+"_Middle",time1,price,time2,price,(color)ObjectGet(sparam,OBJPROP_COLOR),(int)ObjectGet(sparam,OBJPROP_WIDTH),(string)ObjectGet(sparam,OBJPROP_TOOLTIP),digits);
      }
   }
      
//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   if(eIndex3>=0)
      {
      return(iTime(eSymbol,eTimeFrame,eIndex3));
      }
   else
      {
      return(iTime(eSymbol,eTimeFrame,0)-eIndex3*PeriodSeconds(eTimeFrame));
      }
   }

//перерисовывает линию по новым координатам, если её нет, то создаёт
void RedrawLine(long eChartId, int eWindow, string eName, datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, color eColor, int eWidth, string eTooltip, int eDigits)
   {
   if(ObjectFind(eChartId,eName)==-1)
      {
      if(!ObjectCreate(eChartId,eName,OBJ_TREND,eWindow,0,0)) return;
      ObjectSetInteger(eChartId,eName,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(eChartId,eName,OBJPROP_WIDTH,eWidth);
      ObjectSetInteger(eChartId,eName,OBJPROP_BACK,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_SELECTED,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_RAY_RIGHT,false);
      ObjectSetInteger(eChartId,eName,OBJPROP_HIDDEN,true);
      }
   if(ObjectFind(eChartId,eName)==-1) return;   
   if(ObjectGetInteger(eChartId,eName,OBJPROP_TIME)!=eTime1) ObjectSetInteger(eChartId,eName,OBJPROP_TIME,eTime1);
   if(NormalizeDouble(ObjectGetDouble(eChartId,eName,OBJPROP_PRICE)-ePrice1,eDigits)!=0) ObjectSetDouble(eChartId,eName,OBJPROP_PRICE,ePrice1);
   if(ObjectGetInteger(eChartId,eName,OBJPROP_TIME,1)!=eTime2) ObjectSetInteger(eChartId,eName,OBJPROP_TIME,1,eTime2);
   if(NormalizeDouble(ObjectGetDouble(eChartId,eName,OBJPROP_PRICE,1)-ePrice2,eDigits)!=0) ObjectSetDouble(eChartId,eName,OBJPROP_PRICE,1,ePrice2);
   if(ObjectGetInteger(eChartId,eName,OBJPROP_COLOR)!=eColor) ObjectSetInteger(eChartId,eName,OBJPROP_COLOR,eColor);
   if(ObjectGetString(eChartId,eName,OBJPROP_TOOLTIP)!=eTooltip) ObjectSetString(eChartId,eName,OBJPROP_TOOLTIP,eTooltip);
   }
 
大家好。问题:我只能从经纪商列表中选择Just2Trade。当搜索其他经纪公司时,没有任何结果。我试着重新安装,清除了所有的文件夹和文件(包括隐藏的)。有人遇到过这样的问题吗?
附加的文件: