Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1343

 
Forallf:
Quella di mezzo è per me come esempio. Ci sarà un livello diverso, calcolato.

qualsiasi livello può essere impostato lì, e in qualsiasi quantità

 
Andrey Sokolov:

Salve. Potreste dirmi come calcolare il prezzo dell'offerta?

Come posso calcolare un prezzo di offerta che diverse posizioni BUY avranno un profitto totale nullo per coppie di valute, dove la valuta di base (prima) è il dollaro, e il valore del pip non è costante e dipende dai prezzi?

Per le coppie in cui il dollaro è la valuta quotata (seconda) e il valore del pip è costante ho derivato questa funzione,

Questo vi aiuterà)
 
DanilaMactep:
Grazie mille per averlo notato e avermelo detto, l'ho sistemato e in 2 anni di test ci sono stati 26 errori 130. Allo stesso tempo 115 scambi si sono aperti normalmente

se gli ordini pendenti sono piazzati a una distanza dal prezzo corrente inferiore allo STOPLEVEL, ci sarà un errore 130

ecco perché ti è stato dato questo codice

o se devi tenerne conto in qualche altro modo

MarketInfo(_Symbol, MODE_STOPLEVEL);
 
Salve, ho bisogno di un codice per chiudere gli ordini a mercato dopo un certo tempo dall'apertura (24 ore, 48 ore). Il tempo dovrebbe essere regolabile.
 
Max330:
Salve, ho bisogno di codice per chiudere gli ordini a mercato un certo tempo dopo la loro apertura (24 ore, 48 ore). Il tempo dovrebbe essere regolabile.

come questo

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:
Questo vi aiuterà)

Purtroppo non ha aiutato. Questo è generalmente guidato dai prezzi di apertura

 
Andrey Sokolov:

Purtroppo non ha aiutato. Questo è generalmente orientato verso i prezzi di apertura.

Allora non capisco di cosa avete bisogno.

Andrey Sokolov:

Come calcolare il prezzo Bid al quale diverse posizioni BUY hanno un profitto totale nullo

cioè il pareggio di bilancio?

 
MakarFX:

Allora non capisco cosa vuoi.

Cioè in pareggio?

Calcolare un prezzo di chiusura per uno o più ordini unidirezionali (bid per buy) al quale il loro profitto totale+risparmio+commissioni == 0.

Questo problema si verifica nelle coppie in cui la valuta di base è il dollaro e il valore del punto cambia.

 
Forallf:
Il centro è per me come esempio. Ci sarà un altro livello calcolato.

L'indicatore disegna il centro per qualsiasi numero di linee di tendenza:

#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);
   }
 
Ciao a tutti. Domanda: Posso solo selezionare Just2Trade dalla lista dei broker. Quando si cercano altri broker non succede nulla. Ho provato a reinstallare, ho cancellato tutte le cartelle e i file (compresi quelli nascosti). Qualcuno ha avuto un tale problema?
File: