Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 222

 

Puoi controllare il robot di trading

//+------------------------------------------------------------------+

//| Esperti1.mq4 |

//| Copyright 2017, MetaQuotes Software Corp.

//| https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#proprietà link "https://www.mql5.com"

#proprietà versione "1.00"

#proprietà rigorosa

//+------------------------------------------------------------------+

//| https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2020, MetaQuotes Software Corp.

#proprietà link "https://www.mql5.com"


input double Lots=0.01;

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int OnInit()

( OrderSend(Symbol(),OP_BUY,Lots,3,0,Ask+0.0084,Ask-0.0084)


doppio lotto=Lotti;

se profitto allora Lots=lot+0.01 altrimenti Lots=lot-0.01

se Lots=0 allora Lots=0.01

se Lotti>0,03 allora Lotti=0,01

//---

//---

ritorno();

}


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Salve, cari professionisti, consigliatemi come scrivere la condizione quandol'ordine pendente vienespostato una volta ad un certo movimento di prezzo, per esempio, l'ordine Sellstop è stato piazzato a 1.28, il prezzo si è spostato a 1.50 e l'ordine pendente si è spostato sul prezzo ad una certa distanza dal prezzo, ma non si è spostato costantemente dietro il prezzo, si è spostato solo una volta, cioè si è spostato per esempio di dieci pip e si è fermato anche se il prezzo è andato oltre. Saluti, Alexander!
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 

Buon pomeriggio, cari esperti!

Per favore aiutatemi, consigli su come farlo, dove leggere, scrivere parte del codice.

Ho allegato una parte del codice. Ho bisogno di poter inserire il mio commento quando apro un ordine o un ordine limite. Cioè, non proprio nel codice, ma quando si apre il pannello EA.

extern double Lots     = 0.1;
extern int StopLoss    = 250;
extern int TakeProfit  = 150;
extern int Magic       = 1;

double SL, TP;

int ticket;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double price = Ask;

   if(BUY() == 0)
     {
      SL = NormalizeDouble(Ask - StopLoss*Point, 5);
      TP = NormalizeDouble(Ask + TakeProfit*Point, 5);
      ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, "", Magic, 0, Red);
      if(ticket<0)
         Print("Не удалось открыть ордер");
     }
  }
//+------------------------------------------------------------------+
int BUY()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=X; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic &&
         OrderType() == OP_BUY)
        {
         count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
d4vv:

Ho bisogno di poter inserire il mio commento quando apro un ordine o un ordine limite.

input string Mycomment="Preved Medved";


ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, Mycomment, Magic, 0, Red);

Il commento viene scritto quando l'ordine viene creato e non può essere cambiato di nuovo.

 
Aleksei Stepanenko:

Il commento viene scritto quando l'ordine viene creato e non può più essere cambiato.

Grazie mille. Questo è esattamente ciò di cui ho bisogno.

 
Knelson:
Siprega di consigliare come scrivere una condizione quandoun ordine pendentesarà spostato una volta ad un certo movimento di prezzo,

1. Crea un array in cui memorizzare i ticket degli ordini aperti e un flag che l'ordine è già stato spostato.

struct Orders
   {
   int ticket;
   bool moved;
   } orders[];

2. Tieni traccia degli ordini che appaiono di recente e registra in questo array le informazioni sull'ordine aperto con il flag "non si è mosso".

bool finded;
int index==ArraySize(orders)-1;
for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(OrderSymbol()!=symbol) continue;
   if(OrderMagicNumber()!=magic) continue;
   if(OrderType()!=OP_BUYSTOP && OrderType()!=OP_SELLSTOP) continue;
   finded=false;
   for(int j=index; j>=0; j--)
      {
      if(orders[j].ticket==OrderTicket())
         {
         finded=true;
         break;
         }
      }
   if(!finded)
      {
      ArrayResize(orders,++index+1);
      orders[index].ticket=OrderTicket();
      orders[index].moved=false;
      }
   }

3. Elimina le informazioni dall'array se l'ordine viene chiuso, cancellato o trasformato.

4. Controlla la condizione per lo spostamento, se la condizione è soddisfatta e la bandiera "non ha spostato", allora sposta e cambia la bandiera in "spostato".

 
Aleksei Stepanenko:

1. Crea un array in cui memorizzare i ticket degli ordini aperti e un flag che l'ordine è già stato spostato.

2. Tieni traccia degli ordini che appaiono di recente e registra in questo array le informazioni sull'ordine aperto con il flag "non si è mosso".

3. Elimina le informazioni dall'array se l'ordine viene chiuso, cancellato o trasformato.

4. Controlla la condizione per lo spostamento, se la condizione è arrivata e la bandiera "non si è mossa", allora muoviti e cambia la bandiera in "mossa"

Non credo che sia affidabile.

Risolverei un tale problema in un modo più semplice: mettere un ordine pendente con numero magico 2 e cancellare un ordine pendente con numero magico 1 sotto la cui condizione l'ordine dovrebbe essere spostato

Il codice sarebbe semplice - dopo la ricezione del tick, il ciclo dovrebbe passare attraverso l'ordine con il numero magico 1 se viene trovato e ha bisogno di muoversi, poi si cancellerebbe questo ordine e se ne piazzerebbe uno nuovo con il numero magico 2

 

Sì, è una buona opzione.

 
Aleksei Stepanenko:

Sì, è una buona opzione.

UPD: il codice sarà semplice - quando il tick arriva il ciclo sull'ordine con il numero magico 1 se trovato e bisogno di muoversi, quindi eliminare questo ordine e impostare un nuovo ordine con numero magico 2

.... allora proveremo a impostare un nuovo ordine con il numero magico 2 e se è OK allora cancelleremo l'ordine con il numero magico 1

così meno controlli da fare - per esempio i livelli di livello di arresto si è ampliato e non sarà in grado di spostare l'ordine una volta e abbiamo già cancellato l'ordine trovato

in questo modo ;)

 
Osservando il cervello umano (soprattutto il mio, ma non solo), trovo una proprietà: il tunneling. Il processo di pensiero si svolge all'interno di stereotipi di pensiero, come in un tunnel. E non è facile saltarne fuori con i miei sforzi. L'io è inseparabile da me e sembra che il treno del pensiero sia corretto, assolutamente corretto. Ma poi arriva la conoscenza dall'esterno, e cominci a capire che sei stato prigioniero delle tue idee. Miracoli...
Motivazione: