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

 
Igor Makanu:

perché ci si deve abituare

Puoi anche allenarti a portare sempre un ombrello, perché potrebbe piovere. Ci si può anche abituare a un altro, ma tutti lo nascondono dopo ogni uso.

 
Alexey Viktorov:

Puoi anche abituarti a camminare sempre con un ombrello, perché potrebbe piovere. Ci si può abituare anche ad un altro, ma tutti lo nascondono dopo ogni uso.

vogliamo parlarne?

Tanto per cominciare, ecco qui:

c = a/b;

o

se(b!=0) c = a/b;

?

ZS: Purtroppo, sono l'unico della mia famiglia senza ombrello, non posso dire nulla al riguardo, sono sempre in macchina, un ombrello è più un ostacolo che un aiuto.

 
Igor Makanu:

Vogliamo parlarne?

Tanto per cominciare, ecco qui:

c = a/b;

o

if(b!=0) c = a/b;

?

ZS: purtroppo sono l'unico della mia famiglia senza ombrello, non posso dire niente, sono sempre in macchina, l'ombrello è più un ostacolo che un aiuto

La risposta era qui.

Forum per il trading, sistemi di trading automatico e tester di strategie

Qualsiasi domanda, aiuto e discussione su algoritmi e codici per i principianti di MQL4

Andrey Sokolov, 2019.04.20 06:24

Non sono sicuro di cosa normalizzare qui e perché, quando non ci sono operazioni matematiche?
E il secondo esempio?
 
Alexey Viktorov:

La risposta era qui

E il secondo esempio?

Come spiegare il problema... su un altro forum ho avuto una conversazione simile sullo stesso argomento, ma lì stavo difendendo l'opinione che il prezzo corrente non ha bisogno di essere normalizzato, e l'avversario stava facendo rumore che anche il Bid e Ask devono essere normalizzati - non voglio guardare, ma l'opinione degli sviluppatori era che i prezzi del server sono sempre corretti

ok, non normalizzare, dipende da te.

 
Igor Makanu:

come spiegare il problema... su un altro forum ho avuto una conversazione simile sullo stesso argomento, ma lì ho difeso l'opinione che il prezzo corrente non ha bisogno di essere normalizzato, e l'avversario stava facendo rumore che anche il Bid e Ask devono essere normalizzati - non voglio guardare, ma l'opinione degli sviluppatori era che i prezzi del server sono sempre corretti

ok, non normalizzarlo, dipende da te

L'avversario rumoroso non ha sempre ragione. Secondo me dovreste sempre farvi guidare dalla logica e prendere le vostre decisioni. E non si agiti per l'una o l'altra opinione degli altri.

 
Alexey Viktorov:

Un avversario rumoroso non ha sempre ragione. Secondo me bisogna sempre farsi guidare dalla logica e prendere le proprie decisioni. E non agitatevi per un'opinione o un'altra.

la logica è il manuale degli sviluppatori, un esempio corretto è scritto, prendetelo e usatehttps://docs.mql4.com/ru/trading/ordersend

Non ho informazioni sul formato in cui i dati vengono inviati al server, forse i prezzi vengono inviati in forma di testo?

Ho un esempio nell'Aiuto, quindi è vero - come dicono nell'esercito, luminescente significa luminescente! )))

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
Igor Makanu:

la logica - questo è il manuale degli sviluppatori, è scritto un esempio corretto, prendilo e usahttps://docs.mql4.com/ru/trading/ordersend

Non ho informazioni sul formato in cui i dati vengono inviati al server, forse i prezzi vengono inviati in forma di testo?

Ho un esempio in Aiuto, quindi è vero - come dicono nell'esercito, luminescente significa luminescente! )))

Igor, almeno vedi un esempio prima di iniziare a discutere.

void OnStart()
  {
//--- получим минимальное значение Stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- вычисленные значения цен SL и TP должны быть нормализованы
   double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
   double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//--- размещаем рыночный ордер на покупку 1 лота
   int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
   if(ticket<0)
     {
      Print("OrderSend завершилась с ошибкой #",GetLastError());
     }
   else
      Print("Функция OrderSend успешно выполнена");
//---
  }

Dopo tutto, nell'esempio della documentazione il prezzo non è normalizzato senza calcoli matematici. E nell'esercito si dice anche "Ehi voi tre, venite qui, tutti e due"... ma non bisogna imitare nessuno.

 
Alexey Viktorov:

Igor, potresti almeno guardare l'esempio prima di discutere.

Dopo tutto, nell'esempio della documentazione, il prezzo non è normalizzato senza calcoli matematici. E nell'esercito dicono anche 'Ehi voi tre, venite qui, tutti e due'... ma non bisogna imitare nessuno.

Non ho normalizzato il prezzo nel mio esempio:

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

Se volete inviare un mandato come autore del codice, non vi disturberò:

ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  
 
Igor Makanu:

Non ho normalizzato il prezzo nel mio esempio:

Se volete inviare un ordine come autore del codice, non vi disturberò:

Ci sono stati esempi in cui il broker non ha accettato i numeri corretti? Ho notato che nei video tutorial di persone rispettabili impostano degli interi in ordersend().


Forse l'altra cosa è un po' diversa in questo caso. Avevo una funzione di confronto che in qualche modo si rifiutava di accettare come uguale una variabile di tipo doppio e OrderStoploss() o OrderTakeProfit() con gli stessi valori, finché non li ho normalizzati entrambi.

 
Andrey Sokolov:

Ci sono stati esempi di numeri corretti che non sono stati accettati dal broker? Ho notato che nei video tutorial di persone rispettabili, la funzione ordersend() è impostata su interi.

Forse l'altra cosa è un po' diversa in questo caso. In qualche modo avevo una funzione di confronto che non accettava una variabile di tipo doppio e OrderStoploss() o OrderTakeProfit() con lo stesso valore, finché non li ho normalizzati entrambi.

Probabilmente stiamo parlando di un tale esempio:

 double x = 5/2;
 Print("x = ",x);

//ответ 
//х = 2.0
  

e potrebbe essere così:

 double x = 5.0/2.0;
 Print("x = ",x);

//ответ
//x=2.5

Non so se il server accetta i numeri interi, così come le persone autorevoli, mi sono formato da tempo una libreria (corretta secondo me) per lavorare con gli ordini, ecco la mia libreriahttps://www.mql5.com/ru/code/24829

Nel file TradePanel_C#.mqh la mia libreria e la funzione di apertura degli ordini OrderSend_(), scrivo i miei codici in questo modo

TradePanel_Csharp
TradePanel_Csharp
  • www.mql5.com
Торговая панель, которая работает и в Визуализаторе Тестера.Таблица текущих ордеров/позиций.Таблица истории торгов (корректно работает на Хедж-счетах). Использование Ручная торговля в Тестере или вмешивание в работу советника (например, с целью проверки устойчивости ко внешним факторам).Ручная торговля в Терминале на демо/реальных...