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

 
Link_x:
Ciao!
C'è una funzione nella funzione "Kim" che calcola l'ammontare del profitto dell'ultimo ordine aperto?

Non l'ho trovato, ora sono perplesso su una funzione fatta in casa che calcola il margine di profitto dell'ultimo ordine aperto.


OrdineProfitto()

Se avete bisogno esattamente dell'ultimo ordine aperto, allora passate attraverso tutti gli ordini e scegliete quello che è l 'ultimo, poi usate la funzione di cui sopra, che vi restituirà il profitto netto di questo ordine

 
Ekburg:


OrdineProfitto()

Se hai bisogno esattamente dell'ultimo ordine aperto, allora passa attraverso tutti gli ordini e scegli quello con l'ultimo tempo di apertura, poi usa la funzione di cui sopra, che ti restituirà il profitto netto di questo ordine


Come ottengo una risposta appena in tempo, proprio nel momento in cui trovo una soluzione. :)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
Ma grazie lo stesso!
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

Non si cerca per storia, ma per posizioni attuali, qui c'è una catena logica basata su cui si può provare a scrivere del codice:

[blocco di lavorare con muwings e fare un ordine]

1 ricordare il biglietto e il numero magico dell'ordine effettuato

2 monitorare il numero di ordini e se non ci sono ordini nel mercato (significa che il nostro ordine è stato chiuso), allora passare al punto3 o monitorare questo ordine specifico fino a quando il suo tempo di chiusura è più di zero, nel qual caso si escludono i punti 3 e 4

3 trovare il nostro ordine

4 scoprire se è chiuso

5 scoprire come è stato chiuso

6 se è stato chiuso attraverso uno stop, impostare un altro ordine diverso da esso nella direzione


//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern double Lots = 0.1;
extern double TakeProfit = 100;
extern double StopLoss = 100;       
extern double TrailingStop = 50;
extern double Margincutoff = 100;   
extern double MagicNumber = 12345;
extern double TradeSizePercent = 5;
extern int Slippage = 10;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
  int Crossed (double line1, double line2)
  {
  static int last_direction=0;
  static int current_direction=0;
  
  if (line1>line2)current_direction=1;// пересечение вверх
  if (line1<line2)current_direction=2;// пересечение вниз
  
  if (current_direction!=last_direction)//изменения произошли
  {
  last_direction=current_direction;
  return(last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    int cnt, ticket, total, totalhistory, memoryticket;
    double shortEMA, longEMA;
    
    if(Bars<100) 
     {
     Print("Bars less than 100");
     return(0);
     }
     shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
     longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total=OrdersTotal();
   if(total<1) 
     {
      // нет открытых ордеров
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // проверяем пересечение МА для открытия позиции на покупку
      if(isCrossed==1)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
        //проверяем пересечение МА для открытия позиции на продажу
        if(isCrossed==2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
         return(0); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
  int old_order_type;
 
   
  RefreshRates();
  
  //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
  for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- ) 
  {
     if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
     {
         old_order_type = OrderType();
         if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                break; //прекращаем поиск
         }
     }
  }
  //если раньше покупали, то теперь продаем
  if ( old_order_type == OP_BUY )
  {
  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
 //если раньше продавали, то теперь покупаем
  if ( old_order_type == OP_SELL )
  {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
   return(0);
  }
//+------------------------------------------------------------------+
Questo è quello che ho. Apre davvero 3 lotti. Sono davvero fregato. Puoi correggere il codice? Cosa c'è che non va?
 
Sono stufo di fare queste domande (incredibilmente snervanti, pi****, scusate (variabili del cazzo che non riesco a trovare (soprattutto fastidiose, quello che non riesco a trovare io)).

Quale variabile è responsabile del valore attuale del prezzo?
Ho cercato la documentazione, non c'è nulla tranne Bid, Ask, POINT_HIGH, POINT_LOW.
Esiste una tale variabile?
 
Link_x:
Sono stufo di fare queste domande (incredibilmente snervanti, pi****, scusate (variabili del cazzo che non riesco a trovare (soprattutto fastidiose, quello che non riesco a trovare io)).

Quale variabile è responsabile del valore attuale del prezzo?
Ho cercato la documentazione, non c'è nulla tranne Bid, Ask, POINT_HIGH, POINT_LOW.
Esiste una tale variabile?
Avete notato come cambia il prezzo nella finestra "Market Watch"? Puoi vedere lì i prezzi Bid e Ask. Il primo è usato per vendere e il secondo per comprare.
 
Link_x:

Come tempestivamente ricevo una risposta, proprio quando trovo una soluzione. :)
La soluzione è: "Prenditi il tuo tempo per fare domande". E, considerando che non sempre si ottengono risposte competenti... :)))
 
khorosh:
Avete notato come cambia il prezzo nella finestra di Market Watch? Lì puoi vedere il Bid e l'Ask - questi sono i prezzi attuali. Il primo è usato per vendere e il secondo per comprare.

Esattamente!
Ho dimenticato una cosa così piccola!
 
TarasBY:
La soluzione è: "Non avere fretta di fare domande". E, considerando che non sempre si ottengono risposte competenti... :)))
Sì, sì. :)
 
Link_x:
Proprio così!!!
Ho dimenticato una cosa così piccola!!!

Rispondi correttamente, come un vero studente in un esame: non puoi dire non lo so - devi dire mi sono dimenticato))).
 
Link_x:
Sì, sì. :)

Forse dovresti provare a rispondere alle domande degli altri invece di fare le tue. I benefici sono molto più grandi (fino a un certo punto), certamente i benefici per te stesso
Motivazione: