Un consulente che seguirebbe il tasso su un grafico a cinque minuti con condizioni una volta lanciato: - pagina 7

 
int start()
{
if(OrdersTotal() !=0) return;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Il prezzo è sceso più di Delta points
........


 
zhuki:
if(OrdersTotal ()!=0) return;

E gli ordini di altre persone (usando altri simboli e maghi)? Nel tester, funzionerà, ma se c'è qualcos'altro sull'account oltre a questo EA, il modo corretto è il seguente

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

La funzione restituirà false se non c'è nessuna posizione aperta dal simbolo corrente con il mago specificato (passato ad essa).

 
Lo ingannerai, e lui non può leggere le descrizioni.
Immaginatevi come sarà confuso, per questo l'ho scritto in modo che possa capirlo meglio.
 
Molto bene, ci sto prendendo la mano :))
Entrambi i casi sono stati recuperati, grazie mille.
 
Solo con Expert Advisor non ho ancora capito come funziona la funzione Delta
Le transazioni non vengono attivate nelle mie condizioni
Delta=30
Significa che voglio che il mio Expert Advisor apra la posizione +-30 in pip. Ma si apre a 5-10 pip su e giù, non è chiaro....
 
Davvero, la funzione Delta non sa come funziona :(
Forse ci sono altre soluzioni semplici?
Ho trovato una funzione
Distance=30 // Distanza dal prezzo corrente al prezzo dell'ordine pendente
Può essere implementata non solo per gli ordini pendenti?
L'idea è la stessa: tenere traccia della barra corrente, il suo prezzo aperto e se durante una barra di 5 minuti il suo prezzo aumenterà o diminuirà di, diciamo, 30 pip dal mercato aperto di quella barra di 5 minuti, solo allora aprire una posizione......
La mia strategia non funziona con gli ordini pendenti.....

 

E tu posteresti tutto il tuo codice qui. E vedere perché Delta non funziona...

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




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

Ecco l'intero codice.....
 

Sì, infatti. Delta.... non funziona

A quanto pare, qui è necessario con segni (polarità) di un Delta per capire all'acquisto e alla vendita, "per" nel codice sopra, per esempio, al valore di acquisto(iOpen(NULL,0,0)-Ask tutto il tempo sarà negativo. E il trade è aperto al prezzo aperto della barra (iOpen(NULL,0,0)-Ask>=Delta...

Se si prova in questo modo (comprare) -

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
cioè alla fine dobbiamo testare questa variante:

int start()
{
if(OrdersTotal()!=0) return; //Follow only one trade.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Il prezzo è sceso di meno o = Delta points
//Null-tek instrument, 0-tek.chart, 0-tracking tek bar
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Il prezzo è aumentato di più o = Delta punti
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
Ho indovinato o ho confuso Ask con Bid nelle linee:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов