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

 
Fatto il mio codice, sembra compilare, ma funzionerà?

int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask+TakeProfit*Point,0);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
}
//----
return(0);
}


OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
Эту строку вытащил из другого эксперта. А что означают в ней цифры 5 и 0?
 
Sei irreparabile, leggi l'aiuto, è tutto lì.
 
Alla fine è diventato cosa, è qualcosa, ma non funziona...... :(
Cosa c'è che non va?

//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                         // Stop Loss
extern int TakeProfit=3;                        // Take Profit
extern int Percent=100;                         // Объем сделки в %
extern int Delta=30;                            // Сигнал приказа в пунктах
extern string _Comment = "Money-money-money";    // Комментарий к ордеру
extern int MagicNumber =55555;                  // Order ID
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask*Point,0);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask*Point,0);
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Anche se la faccia sul grafico smiles...... non funziona. Provato sulla sterlina.
 

Funzione OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Parametri: simbolo - Nome dello strumento finanziario scambiato.

cmd - L'operazione commerciale. Può essere uno qualsiasi dei valori dell'operazione di trading.

volume - Numero di lotti.

prezzo - Prezzo di apertura. slippage - Massima deviazione di prezzo consentita per gli ordini di mercato (ordini di acquisto o vendita).

Stoploss - Il prezzo per chiudere una posizione quando viene raggiunta la perdita (0 se non c'è perdita).

Takeprofit - Il prezzo per chiudere una posizione quando viene raggiunto il livello di redditività (0 se non c'è un livello di redditività).

comment - Testo del commento dell'ordine. L'ultima parte del commento può essere cambiata dal server di trading.

magic - Il numero magico dell'ordine. Può essere usato come identificatore definito dall'utente.

expiration - Tempo di scadenza dell'ordine in sospeso.

arrow_color - Colore della freccia di apertura sul grafico. Se il parametro manca o il suo valore è CLR_NONE, la freccia di apertura non viene mostrata sul grafico.

Dove ce l'hai? - Hai qualche frammento al posto di OrderSend


#property copyright "Copyright © 2008, salesman и группа лиц "
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                         // Stop Loss
extern int TakeProfit=3;                        // Take Profit
extern int Percent=100;                         // Объем сделки в %
extern int Delta=30;                            // Сигнал приказа в пунктах
extern int MagicNumber =55555;                  // Order ID
int  ticket;
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

 

E qual è il risultato del calcolo di Ask*Point qui:

OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask*Point,0);
???
 
Non ho ...... che funziona per qualche motivo.
Ecco il codice completo:
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                          // Stop Loss
extern int TakeProfit=3;                         // Take Profit
extern int Percent=70;                           // Объем сделки в %
extern int Slippage = 3;                         // Максимальное отклонение от запрошенной цены
extern int Delta=2;                              // Сигнал приказа в пунктах
extern string _Comment = "Money-money-money";    // Комментарий к ордеру
extern int MagicNumber =55555;                   // Order ID
int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

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


Per una prova veloce ho impostato Delta=2

extern int Delta=2;


Forse puoi implementare questo per capire gli errori:

//+------------------------------------------------------------------+
bool IsCondition()
  {
   bool result=true;
   string field="     ";
   string msg;
   string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
   if (!IsConnected())
     {
      msg=msg+"Связь с сервером отсутствует"+field;
      result=false;
     }
   if (!IsTradeAllowed())
     {
      if (!result) msg=msg+"\n";
      msg=msg+"Торговля запрещена"+field;
      result=false;
     }
   if (!result) MessageBox(msg,title,MB_OK|MB_ICONERROR);
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ShowError()
  {
   string description;
   int err=GetLastError();
   switch(err)
     {
      case   0: return;
      case   1: description="Нет ошибки, но результат неизвестен"; break;
      case   2: description="Общая ошибка"; break;
      case   3: description="Неправильные параметры"; break;
      case   4: description="Торговый сервер занят"; break;
      case   5: description="Старая версия клиентского терминала"; break;
      case   6: description="Нет связи с торговым сервером"; break;
      case   7: description="Недостаточно прав"; break;
      case   8: description="Слишком частые запросы"; break;
      case   9: description="Недопустимая операция нарушающая функционирование сервера"; break;
      case  64: description="Счет заблокирован"; break;
      case  65: description="Неправильный номер счета"; break;
      case 128: description="Истек срок ожидания совершения сделки"; break;
      case 129: description="Неправильная цена"; break;
      case 130: description="Неправильные стопы"; break;
      case 131: description="Неправильный объем"; break;
      case 132: description="Рынок закрыт"; break;
      case 133: description="Торговля запрещена"; break;
      case 134: description="Недостаточно денег для совершения операции"; break;
      case 135: description="Цена изменилась"; break;
      case 136: description="Нет цен"; break;
      case 137: description="Брокер занят"; break;
      case 138: description="Новые цены"; break;
      case 139: description="Ордер заблокирован и уже обрабатывается"; break;
      case 140: description="Разрешена только покупка"; break;
      case 141: description="Слишком много запросов"; break;
      case 145: description="Модификация запрещена, так как ордер слишком близок к рынку"; break;
      case 146: description="Подсистема торговли занята"; break;
      case 147: description="Использование даты истечения ордера запрещено брокером"; break;
      default : description="Неизвестная ошибка"; break;
     }
   string field="     ";
   string msg="Ошибка #"+err+" "+description+field;
   string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
   MessageBox(msg,title,MB_OK|MB_ICONERROR);
  }
// End
//+------------------------------------------------------------------+
 
salesman77:
Non funziona per me per qualche motivo......
Ecco il codice completo:
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

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


In realtà OrderSend per l'acquisto e per la vendita sono scritti in modo leggermente diverso. Perché compriamo al prezzo di Ask e vendiamo al prezzo di Bid! E anche la chiusura per fermate... Con voi - tutto allo stesso prezzo ...
Inoltre, lot=1 è destinato a funzionare qui. Il vostro deposito corrisponde a questa dimensione? E cosa dice il log - perché non funziona?
 

Non conosci la differenza tra Bid e Ask, non capisci la differenza tra una posizione corta e una lunga. Non hai idea di cosa sia uno Stop Loss e un Take Profit. Non capite quello che avete già scritto. Lei sta cercando di codificare in base al suo istinto. Chi può aiutarti???? Imparare le basi. Tutte le domande hanno avuto risposta. Non vedo l'utilità di citare un libro di testo.

 
salesman77:
Non funziona per me per qualche motivo......
Per una prova veloce ho impostato Delta=2

extern int Delta=2;


Per quale motivo? Sai come usare un tester?

Una volta ho conosciuto un tizio. Faceva trading sul forex da un anno e pensava ancora che una posizione lunga fosse quella che rimaneva sul mercato per molto tempo. E una posizione corta è una posizione tipo "pipsqueak".

Cosa ne pensate?

Motivazione: