Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 710

 
sponger:
Puoi fare così: Km=MathMax(i/r,Punto); // con la divisione, e non sarà zero!
 
borilunad:
Puoi fare così: Km=MathMax(i/r,Punto); // con la divisione, e non sarà zero!

wow!!! Testa! Grazie mille!!! Dopo un lavoro estremamente tedioso di quattro ore ho finalmente trovato come attaccare questa funzione in modo che il tester non giuri) è venuto fuori quanto segue.

double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); //restituisce l'indice della barra per n periodi con prezzo minimo

double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0); //restituisce l'indice della barra per n periodi con prezzo massimo

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a); //restituisce il valore del prezzo della barra con il prezzo più basso

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b); //restituisce il prezzo della barra con il prezzo più alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //restituisce il prezzo di chiusura dell'ultima barra

doppio xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));

Stampa(xm1);

e ha anche reso la formula più liscia;)

Grazie!

 
Жалко, кнопочки "Спасибо" нету(
 

sponger:

È unpeccato che non ci sia un pulsante "Grazie".

Ma c'è un altro pulsante magico: SRC, quando lo usi, il codice (o frammenti di esso) diventa più ordinato e leggibile nel post di chi fa la domanda, aggiungendo un plus al karma dell'autore della domanda e aumentando il numero di coloro che guarderanno questo codice e decideranno di aiutarlo.

Solo shhhh. . Così nella conoscenza segreta della magia del pulsante SRC sono dedicati, in generale, solo coloro che leggono i testi sacri dei manuali sul sito. Per esempio, come questi.

E successo a voi qui nel padroneggiare la conoscenza segreta per risolvere altre domande!
 
sponger:

wow!!! Testa! Grazie mille!!! Dopo un lavoro estremamente noioso di quattro ore ho finalmente trovato come attaccare questa funzione in modo che il tester non giurasse) è uscito all'incirca il seguente.

doppio xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));

Stampa(xm1);

e ha anche reso la formula più liscia;)

Grazie!

Prego! E sono d'accordo conDiPach al 100%! Buona fortuna!
 
void ChagingLots(int Magic,double percent,double lot)
{ 
  double t=2,             //коэффициент при делении,для того чтобы узнать цену закрытия
         PriceCl,         //цена закрытия части ордера
         takeprofit;      //нужна для вычислений
  int count = 0,order;
  for(int i=OrdersTotal()-1;i>=0;i--)    //пробегаемся по массиву ордеров
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
              {
                 if(OrderType()== OP_BUY)        //если ордер на покупку
                 {
                 takeprofit = OrderTakeProfit();   //вычисляем тейк ордера
                 PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);  //примерную цену закрытия
                 order = OrderTicket();    //получили ордер
                 if(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
                 {OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);} 
                 }
                 if( OrderType()== OP_SELL )// для продажи аналогично
                 {
                   takeprofit = OrderTakeProfit();
                   PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
                   order = OrderTicket();
                   if(Bid<PriceCl)
                   {OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
                 }
              }
          }
     }
     
}

Ciao a tutti)

Ho provato a scrivere una funzione per chiudere una parte della posizione, ma quando la eseguo nel tester, 138 sta spuntando un errore, non capisco quale sia il problema.

Ecco un Expert Advisor in cui questa funzione dovrebbe funzionare)

File:
zigzagx.mq4  16 kb
 
LBatters:

Ciao a tutti)

Ho provato a scrivere una funzione per chiudere una parte della posizione, ma quando la eseguo nel tester, 138 sta spuntando un errore, non capisco quale sia il problema.

Ho un EA in cui questa funzione dovrebbe funzionare).

Hai guardato nel Dock, cosa significa questo errore! Da lì troverete la risposta!

A che prezzo si chiude l'acquisto? E il Vendere?

 

Saluti a tutti
La mia domanda è più legata agli sviluppatori di meta-citazioni, ma comunque...


Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?

Codice:

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));

Print(iClose(Symbol(),0,1200));

Quando si verifica questo spostamento, il terminale emette 0,0 per 2 casi

Ma

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));

Print(iClose(Symbol(),0,120)); 

Nel test tutto funziona

È possibile regolare in qualche modo la dimensione della cronologia disponibile? Forse qualcuno ha affrontato un problema simile e ha già trovato una soluzione?
Grazie in anticipo!

 

Ciao a tutti.

Sto cercando di aggiornare un semplice EA trawl di Kim per cancellare gli ordini pendenti dopo aver chiuso tutti gli ordini a mercato, non ci riesce(

Ho aggiunto la funzione per cancellare gli ordini in sospeso:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(SoundSuccess); break;
              } else {
                err=GetLastError();
                if (UseSound) PlaySound(SoundError);
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

Ho affrontato un altro problema che non dovrei essere in grado di risolvere perché non sono troppo bravo a programmare.

Credo che dovrei scrivere una condizione come:

Questo è solo un esempio di un altro EA.

   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit) 
     {
      ClosePosFirstProfit();
      if(DeleteOrders) DeleteOrders();
     }


Per favore, aiutatemi.

File:
tral.mq4  19 kb
 
Signori conoscitori di MQL-4, come può il codice MQ4 scaricare e caricare nuovamente un indicatore?
Motivazione: