Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 84

 
Arseniy Barudkin:   Ciao signori, per favore aiutatemi a scrivere questa funzione.

Felice Giorno della Vittoria!!! Sono passati 4 giorni - nessuna risposta. Proviamo... Gli insoddisfatti scrivono di persona!!!

//+-------------------------------------------------------+
//| функция перебрала открытые ордера на графике          |
//| и выделила: 1) с самым маленьким лотом и --- профитом |
//| 2) с самым большим лотом и +++ профитом.       скрипт |
//| Предполагается, что такие есть. И удалила    PROBA.mq4|
//+-------------------------------------------------------+
// Назначение функций OrdersTotal, OrderSelect, OrderClose
// и прочих узнаем поставив на них курсор и нажав F1

#property strict

void OnStart()
{
   int    Проскальзывание=20;
   int    Тикет1 =0,  Тикет2=0;
   double Лот1=100000, Лот2=0;
   bool   Результат;     //  Чтоб избежать лишних предупреждений

   // Выделение
   for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)
   {
     if(!OrderSelect(Тикет,SELECT_BY_POS)) continue; // Что-то помешало - идем к следующему
     if(OrderSymbol() != _Symbol) continue;          // Чужой график

     // Если с меньшим лотом и   --- профитом   то запомним тикет и лот
     if(OrderLots()<Лот1     &&  OrderProfit()<0)
     {
       Тикет1=OrderTicket();
       Лот1=OrderLots();
     }

     // Если с большим лотом и   +++ профитом   то запомним тикет и лот
     if(OrderLots()>Лот2     &&  OrderProfit()>0)
     {
       Тикет2=OrderTicket();
       Лот2=OrderLots();
     }
   }

   // Удаление
   if(Тикет1)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет1,SELECT_BY_TICKET))  // Чтоб получить цену закрытия
         Результат=OrderClose(Тикет1, Лот1,OrderClosePrice(),Проскальзывание);
   }

   if(Тикет2)
   {
      while(!RefreshRates());
      if(OrderSelect(Тикет2,SELECT_BY_TICKET))
         Результат=OrderClose(Тикет2, Лот2,OrderClosePrice(),Проскальзывание);
   }
}   

E poi è sorta la domanda: se ci sono solo due ordini. Uno con un lotto grande con profitto negativo, e uno con un lotto più piccolo con profitto positivo

E se ci fosse un solo ordine. Cosa succede se tutti gli ordini hanno lo stesso lotto e tutti con un profitto negativo - dobbiamo chiudere uno per uno?

 

Ciao!

Posso avere un aiuto? L'Expert Advisor recupera i tradeogni tick. Come faccio a scrivere il codice per togliere circa 5 scambi o solo quanti ne voglio?

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

{

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red);

}

Cosa dovrei cambiare, aggiungere al codice?

Puoi rispondere a ***.

Grazie!

 
alstefanov:

Ciao!

Posso avere un aiuto? L'Expert Advisor recupera i tradeogni tick. Come faccio a scrivere il codice per togliere circa 5 scambi o solo quanti ne voglio?

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

{

OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point, "Batsasho",1,0,Red);

}

Cosa dovrei cambiare, aggiungere al codice?

Puoi rispondere a ***.

Grazie!

extern int tp=50;

extern int sl=200;

extern double lot=0.01;

void OnTick()

{ 

if(OrdersTotal()==0)OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);

}
 
Si prega di consigliare come accelerare il lavoro dell'EA nel tester per essere testato più velocemente, l'EA usa solo un indicatore
 
missha32 Come faccio a rendere il mio EA più veloce nello Strategy Tester, usa solo un indicatore

Prima di tutto, accorciare l'intervallo di tempo dei test. Il meglio: 1) gli ultimi tre mesi. 2) tre mesi con una brexit nel mezzo. Assicurati di non fare il test su tutte le zecche. Infatti, in MT4, non ci sono tick nella storia, e sono modellati da leggeri scatti di prezzo su e giù. Se testate su due timeframes - M15 e M1, allora vedete, dove è meglio. O, meglio ancora, usa la demo - avviala il lunedì mattina e controlla il risultato il venerdì sera usando il noto script. Se abbiamo bisogno di testare 100 Expert Advisors, apriamo 10 terminali e in ogni terminale ci sono 10 grafici con Expert Advisors.

È necessario avere molti computer. Su un conto reale 4 dollari con 500 di leva sono sufficienti. Guarda qualsiasi grafico - con un'entrata corretta puoi facilmente raddoppiare il tuo deposito in un giorno. E questo un milione di volte in un mese. Ci sono questi EA gratuiti su Internet? C'è qualcuno che lo vende? Pertanto, il denaro dovrebbe essere investito in computer. Stiamo cercando i punti di ingresso. Scriviamo programmi, calcoliamo in Excel usando le formule e le macro, e scriviamo script e Expert Advisors per i calcoli. Poi, quando capiremo come trovare i punti di ingresso, e poi Robot, Stop, Trawl, Deposito, Depositi, Prelievi...

 
STARIJ:

Felice Giorno della Vittoria! Sono passati 4 giorni - nessuna risposta. Proviamo... Gli insoddisfatti scrivono nei loro resoconti personali!!!

E poi è sorta la domanda: se ci sono solo due ordini. Con un lotto grande con un profitto negativo, con un lotto più piccolo con un profitto positivo

E se ci fosse un solo ordine. E se tutti gli ordini hanno lo stesso lotto e tutti con un profitto negativo - dobbiamo chiudere uno per uno?

for(int Ticket=OrdersTotal()-1; Ticket>=0; Ticket--) - questo è il codice della ricerca degli ordini di mercato per ticket in ordine inverso (dall'ultimo ordine aperto al primo) - ho capito bene?

Ma "Ticket" non funziona in cirillico, deve essere "Ticket" in latino.

 
Yaroslav Nykula:
for(int Ticket=OrdersTotal()-1; Ticket>=0; Ticket--) - questo è il codice dell'ordine di mercato cercato dal biglietto in ordine inverso (dall'ultimo aperto al primo) - ho capito bene?

Ma "Ticket" in cirillico non funziona, serve "Ticket" in latino.

Non ho controllato, ma dovrebbe passare non solo in cirillico ma anche in cinese.
 
Vitaly Muzichenko:   Non ho controllato, ma dovrebbe passare non solo in cirillico ma anche in cinese.
Quando prendo una nuova lingua, prima di tutto controllo se il cirillico mangia il cirillico o lo sputa. Questo lo fa. Qui c'è lo script - controlla.
File:
PROBA.mq4  2 kb
 
Salve. La domanda è: possiamo caricare i valori dei tick (i prezzi corrispondenti) per un certo periodo di trading (cioè, per una singola candela) in un array unidimensionale? E farlo in modo tale che la matrice si formi durante la formazione di una candela. È realistico in MQL4? Apprezzerei il vostro feedback.
 
STARIJ:

Felice Giorno della Vittoria!!! Sono passati quattro giorni - nessuna risposta. Proviamo... Le persone insoddisfatte scrivono in privato!!!

E poi è sorta una domanda: se ci sono solo due ordini. Con un lotto grande con un profitto negativo, con un lotto più piccolo con un profitto positivo

E se c'è un solo ordine. E se tutti gli ordini hanno lo stesso lotto e tutti con un profitto negativo, dobbiamo chiudere uno per uno?


Grazie mille! Questa è una buona funzione! Questa funzione dovrebbe essere chiamata se non c'è abbastanza margine per aprire un altro ordine. Ma non ho espresso correttamente la mia idea; risulta che avevo bisogno di qualcos'altro! Il lotto più grande con il maggior profitto dalle posizioni aperte e il lotto più piccolo con profitto negativo dalle posizioni aperte.