Lansmandan sonra aşağıdaki koşullarla beş dakikalık bir çizelgenin seyrini takip edecek bir Uzman Danışman: - sayfa 7

 
int başlangıç()
{
if( OrdersTotal() !=0) dönüş;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Fiyat Delta puanlarından fazla düştü
........


 
zhuki :
if( OrdersTotal ()!=0) dönüş;

Ve diğer insanların emirleri (diğer semboller ve diğer büyüler için) ??? Test cihazında çalışacak, ancak hesapta bu danışman dışında başka bir şey varsa, o zaman şu şekilde daha doğrudur:

 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 ) ;
}

Mevcut sembol için verilen (ona iletilen) sihirle açık pozisyon yoksa fonksiyon false döndürür.

 
Sevgili, bu tür hesaplamalarla adamı yanıltacaksınız ve açıklamaları nasıl okuyacağını bilmiyor.
Kafasının nasıl karıştığını bir düşünün, bu yüzden onun için daha açıklayıcı olsun diye yazdım.
 
Bu arada zaten gülüyorum :))
Her iki dava da yakalandı, çok insan teşekkürler.
 
Sadece bir uzmanla, Delta işlevinin nasıl çalıştığı konusunda hala kafam karıştı
İşlemler benim şartlarımda çalışmıyor
Delta=30
Bu, EA'nın puan olarak +-30 pozisyon açmasını istediğim anlamına geliyor. Ve büyüme ve düşüşle 5-10 noktada açılıyor, belli değil....
 
Gerçekten, Delta işlevi nasıl olduğunu anlamıyor :(
Başka basit çözümler var mı?
Burada bir fonksiyon kazdım
Mesafe
=30 // Mevcut fiyattan bekleyen emirlerin fiyatına olan mesafe
Sadece bekleyen siparişler için uygulanamaz mı?
Fikrin özü aynıdır: Mevcut çubuğu, açılış fiyatını takip edin ve 5 dakikalık bir çubuk sırasında fiyat bu fiyattan yükselir veya düşerse, diyelim ki bu 5 dakikalık açılış pazarından 30 puan uzakta. bar, ancak o zaman bir pozisyon açın. .....
Bekleyen siparişlerle stratejim çalışmıyor.....

 

Kodun tamamını buraya yazar mısın? Ve bakalım Delta neden çalışmıyor..

 
//+------------------------------------------------------------------+
//|                                                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);
}




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

İşte kodun tamamı .....
 

Evet kesinlikle. Delta çalışmıyor...

Görünüşe göre, burada satın alırken ve satarken Delta'nın işaretleri (kutupluluğu) ile ilgilenmeniz gerekiyor, "çünkü" yukarıdaki kodda, örneğin satın alırken, değer ( iOpen (NULL,0,0)-Ask her zaman negatif olsun ve bar açılış fiyatından hemen sonra işlem açılır (iOpen(NULL,0,0)-Ask>=Delta...

Öyleyse deneyin (satın alın) -

 if ( Ask - iOpen ( NULL , 0 , 0 ) >= Delta * Point ) //Цена выросла на больше или = Delta пунктов
 
onlar. sonunda, bu seçeneği test etmeniz gerekir:

int başlangıç()
{
if( OrdersTotal() !=0) dönüş; //Yalnızca bir işlem gerçekleştirin.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Puan) //Fiyat düştü veya = Delta puan
//Null-tech enstrüman, 0-akım tablosu, 0-geçerli çubuğu izleme
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Puan,Ask+TakeProfit*Puan,"Satın Alındı",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Puan) //Fiyat daha fazla artırıldı veya = Delta puan
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Puan,Teklif AlKar*Puan,"Satıldı",MagicNumber,22222,Green);
}
//----
dönüş(0);
}
Şu satırlarda Sor ile Bid'i düzelttim mi yoksa kafam mı karıştı:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

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