[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 151

 
ewoke :

Tünaydın.

2009'dan önce başlayan EURUSD m5/m15 için bir geçmişe ihtiyacınız var, herkes kendi geçmişini paylaşabilir mi? (yani, Uzman Danışmanlarınızda hata ayıkladığınız).

Çok minnettar kalırım.

Terminal açıkken F2'ye basın, ardından Fx Majors -> EURUSD ->1 Dakika (M1) -> İndir seçeneğine basın.

 
paladin80 :
Açılış kaşlı ayracı { fiyat[...]=Sor; (aşağıya bakınız). if operatörü hakkında daha fazla bilgi edinin. if'den hemen sonra parantez yoksa, o zaman sadece bir eylemi işler (fiyatınız var[...]=Ask; var), birkaç eyleme ihtiyacınız varsa, if'den hemen sonra {...} içine alınmaları gerekir.

Teşekkürler ama önerdiğiniz gibi if ifadesinin hemen ardından parantez koydum,
ama hiçbir şeyi değiştirmedi.
ve fiyat düştü ve 1.2100 ve 1.2200 seviyelerini geçti ve operatörün durumuna göre poz verdi

açıksa 1.2100 ve 1.2200 seviyelerinde alım pozları - açılmadı.


 
alex12 :
Teşekkürler ama önerdiğiniz gibi if ifadesinin hemen ardından parantez koydum,
ama hiçbir şeyi değiştirmedi.
ve fiyat düştü ve 1.2100 ve 1.2200 seviyelerini geçti ve operatörün durumuna göre poz verdi

açıksa 1.2100 ve 1.2200 seviyelerinde alım pozları - açılmadı.


Bu durumda tick işlemini tamamlamak için siparişler gönderildikten sonra iade ifadesi koymak gerekmez mi?
 
alex12 :
Teşekkürler ama önerdiğiniz gibi parantezleri if ifadesinin hemen arkasına koydum,
ama hiçbir şeyi değiştirmedi.
ve fiyat düştü ve 1.2100 ve 1.2200 seviyelerini geçti ve operatörün durumuna göre poz verdi

açıksa 1.2100 ve 1.2200 seviyelerinde alım pozları - açılmadı.

İlk pozisyonu manuel olarak mı açıyorsunuz yoksa fiyat belirli bir seviyeyi geçtiğinde ve ardından böyle bir seviyenin varlığına bağlı olarak bekleyen emirlerin verilmesini mi istiyorsunuz? Şu şekilde deneyin:
 if ( OrdersTotal ()> 0 )
{   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (SELECT_BY_POS,MODE_TRADES)
      {   if ( OrderSymbol ()!= Symbol ())   continue ;
         if ( OrderType ()==OP_BUYLIMIT) return ( 0 );
}  }  }

if ( OrdersTotal ()> 0 )
{   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
      {   if ( OrderSymbol ()!= Symbol ()) continue ;
         if ( OrderType ()==OP_BUY)
         {   for ( int j= 0 ; j= 10 - 1 ; j++}
            {   OrderSend ( Symbol (),OP_BUYLIMIT,Lot,price[j], 10 , 0 ,Ask+g* Point , "My order #" , 11 +j);
               Sleep ( 10 * 1000 );
      }  }  }
}  }
Burada, elbette, DC'nin bekleyen siparişi reddetmesi durumunda hala yeterli hata işleme yoktur.
 
OlegTs :
Bu durumda tick işlemini tamamlamak için siparişler gönderildikten sonra iade ifadesi koymak gerekmez mi?

Teşekkürler.Siparişler gönderildikten sonra iade ifadesini koydum ve hiçbir şey değişmedi.


 extern double Lot= 1 ;
int g= 20 ; //тейкпрофит
double price[ 10 ];   // Заданный уровень 
//-----------------------
int init()
  {
double price[ 10 ];   // объявляем массив из 5 элементов            
price[ 0 ] = 1.2100 ; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
price[ 1 ] = 1.2200 ;   // обращаемся ко второму элементу 
price[ 2 ] = 1.2300 ;   // и так далее 
price[ 3 ] = 1.2400 ; 
price[ 4 ] = 1.2500 ;
price[ 5 ] = 1.2600 ; 
price[ 6 ] = 1.2700 ;  
price[ 7 ] = 1.2800 ; 
price[ 8 ] = 1.2900 ;
price[ 9 ] = 1.3000 ;  
   return ( 0 );
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 );

   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==False) //проверка наличия откр.поз
   {
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 11 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 12 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 13 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 14 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 15 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 5 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2600 , 10 , 0 ,Ask+g* Point , "My order #" , 16 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 6 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2700 , 10 , 0 ,Ask+g* Point , "My order #" , 17 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 7 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2800 , 10 , 0 ,Ask+g* Point , "My order #" , 18 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 8 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2900 , 10 , 0 ,Ask+g* Point , "My order #" , 19 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 9 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.3000 , 10 , 0 ,Ask+g* Point , "My order #" , 20 ); return ;
   }
       return ( 0 );
  }
//+------------------------------------------------------------------+
 
paladin80 :
İlk pozisyonu manuel olarak mı açıyorsunuz yoksa fiyat belirli bir seviyeyi geçtiğinde ve ardından böyle bir seviyenin varlığına bağlı olarak bekleyen emirlerin verilmesini mi istiyorsunuz? Şu şekilde deneyin: Burada, elbette, DC'nin bekleyen siparişi reddetmesi durumunda hala yeterli hata işleme yoktur.

Teşekkür ederim İlk poz, gönderme emrinde tanımlanan seviyeye göredir ve daha sonra, bu türlerin varlığına bağlı olarak, gönderme emrinde tanımlanan seviyelere göre açık pozlardır.

Bir seviyede bir poz ortaya çıkıyor - çekimde kapanana kadar.

 
alex12 :

...

Bir seviyede bir poz ortaya çıkıyor - çekimde kapanana kadar.

Riskli strateji, böyle oynamazdım.
 
paladin80 :
İlk pozisyonu manuel olarak mı açıyorsunuz yoksa fiyat belirli bir seviyeyi geçtiğinde ve ardından böyle bir seviyenin varlığına bağlı olarak bekleyen emirlerin verilmesini mi istiyorsunuz? Şu şekilde deneyin: Burada, elbette, DC'nin bekleyen siparişi reddetmesi durumunda hala yeterli hata işleme yoktur.

Elbette önerilen kod için teşekkürler ama çok iyi bir programcı olmadığım için bir hata bulamadım: '}' - kapatılmamış parantezler

Notepad++ ile kodunuza büyütülmüş bir ölçekte baktım ve hatayı düzeltemedim.

anlaşılır bir şekilde. Kodun kendisiyle ilgileniyorum. TS'de değil.

'}' hatası veriyor - dengesiz parantezler

Nasıl düzeltileceği hakkında hiçbir fikrim yok.

 extern double Lot= 1 ;
int g= 20 ;           //тейкпрофит
double price[ 5 ];   // Заданный уровень 
//-----------------------
int init()
  { 
double price[]={ 1.2100 , 1.2200 , 1.2300 , 1.2400 , 1.2500 }; // объявляем массив из 5 элементов  
   return ( 0 );
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 );  
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==False) //проверка наличия откр.поз
   {
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 11 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 12 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 13 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 14 ); return ;
   }
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES)==True) //проверка наличия откр.поз
   {
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 15 ); return ;
   }
   if ( OrdersTotal ()> 0 )
   {  
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {  
   if ( OrderSelect (SELECT_BY_POS,MODE_TRADES)
   { 
   if ( OrderSymbol ()!= Symbol ()) continue ;
         
   if ( OrderType ()==OP_BUYLIMIT) return ( 0 );
   } 
   }
   }
   if ( OrdersTotal ()> 0 )
   { 
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {  
   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
   { 
   if ( OrderSymbol ()!= Symbol ()) continue ;
   if ( OrderType ()==OP_BUY)
   {
   for ( int j= 0 ;j= 5 - 1 ;j++}
   { 
   OrderSend ( Symbol (),OP_BUYLIMIT,Lot,price[j], 10 , 0 ,Ask+g* Point , "My order #" , 11 +j);
   Sleep ( 10 * 1000 );
   } 
   } 
   }
   } 
   }
       return ( 0 );
   }
//+------------------------------------------------------------------+
 

Danışmanın test sırasında neden pozisyon açmadığını söyle, nedenini anlamıyorum - kod doğru yazılmış gibi görünüyor.

 extern double Lot= 1 ;
//--------------------------------------------------------------------
int g= 20 ; //тейкпрофит
double price[ 5 ];   // Заданный уровень 
//--------------------------------------------------------------------
int init()
  { 
double price[]={ 1.2100 , 1.2200 , 1.2300 , 1.2400 , 1.2500 }; // объявляем массив из 5 элементов  
   return ( 0 );
  }
//---------------
int start()
   {
   double WMA0= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA1= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA2= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA3= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );
   double WMA4= iEnvelopes ( NULL , 0 , 1 , MODE_SMMA , 0 , PRICE_WEIGHTED , 0.001 ,MODE_PLUSDI, 0 );

   // начало открытия ордеров 
   if ( OrdersTotal ()> 0 ) return ( 0 ); // не открывает новые пока не закроются открытые
   
   if (price[ 0 ]<WMA0&&price[ 0 ]>WMA0) //Buy
   {                           
   price[ 0 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2100 , 10 , 0 ,Ask+g* Point , "My order #" , 1 ); return ;
   }
   else
       if (price[ 1 ]<WMA1&&price[ 1 ]>WMA1) //Buy
   {                           
   price[ 1 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2200 , 10 , 0 ,Ask+g* Point , "My order #" , 2 ); return ;
   }
   else
       if (price[ 2 ]<WMA2&&price[ 2 ]>WMA2) //Buy
   {                           
   price[ 2 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2300 , 10 , 0 ,Ask+g* Point , "My order #" , 3 ); return ;
   }
   else
       if (price[ 3 ]<WMA3&&price[ 3 ]>WMA3) //Buy
   {                           
   price[ 3 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2400 , 10 , 0 ,Ask+g* Point , "My order #" , 4 ); return ;
   }
   else
       if (price[ 4 ]<WMA4&&price[ 4 ]>WMA4) //Buy
   {                           
   price[ 4 ]=Ask;
   OrderSend ( Symbol (),OP_BUY,Lot, 1.2500 , 10 , 0 ,Ask+g* Point , "My order #" , 5 ); return ;
   }

return ( 0 );
} 
/////////////////////////////////////////////////////////////////////////////////////////
 
alex12 :

Danışmanın test sırasında neden pozisyon açmadığını söyle, nedenini anlamıyorum - kod doğru yazılmış gibi görünüyor.


Bir piyasa emri açarken (OP_SELL veya OP_BUY ), açılış fiyatı olarak yalnızca en son Alış (sat) veya Satış (al) fiyatları kullanılabilir.

bunun gibi bir şey.