[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 447

 
TG >> :

ve neden bir işlev çalışmıyor ama başlangıçta çalışıyor?

aslında, bu bir fonksiyondur, sadece eğer if (Close_) { - sonra onu başlangıç içinde kullanın, if void Close_() { başlangıcın dışında bir fonksiyon olarak kullanın.


 void Close_ ( ) {
for ( int trade = OrdersTotal ( ) - 1 ; trade > = 0 ; trade - - ) {
OrderSelect ( trade , SELECT_BY_POS , MODE_TRADES ) ;
if ( OrderSymbol ( ) = = Symbol ( ) ) {
if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
if ( OrderType ( ) = = OP_BUY ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
if ( OrderType ( ) = = OP_SELL ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;
}
Sleep ( 1000 ) ;
}
}
}
 
sergeev >> :


algoritmanız doğru. olası hataların bir çıktısını alın ve genellikle uzmanın bu kodu çalıştırırken nereden geldiğini öğrenin.

+ hesaplanan rsi değerlerini yazdırın.

)))) bence, adamın kodda bir hatası var ..... Acemi olmama rağmen yanılıyor olabilirim.

 
Hata yok gibi görünüyor, sadece küçük bir eklem var ve burada Uyku gerekli değil :)
 
gince >> :

//во внешние перменные
extern bool Close_ =true; //использовать закрытие по РСИ вкл выкл. 
// в старт закиньте
if ( Close_ ) {
for ( int trade = OrdersTotal ( ) - 1 ; trade > = 0 ; trade - - ) {
OrderSelect ( trade , SELECT_BY_POS , MODE_TRADES ) ;
if ( OrderSymbol ( ) = = Symbol ( ) ) {
if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
if ( ( OrderType ( ) = = OP_BUY ) & & ( rsi_1 > Level_2 & & rsi_0 < Level_2 ) ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
if ( ( OrderType ( ) = = OP_SELL ) & & ( rsi_1 < Level_1 & & rsi_0 > Level_1 ) ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;
}
Sleep ( 1000 ) ;
}
}
}
 

Bu standart bir MASimple'dır. Sadece neden düzgün kapanmadığını anlamaya çalışıyorum. İşlemleri kapatmak için mantık deniyor. Bir kısım RSI'dan oluşuyor - bu yüzden çalışmıyor


 //if(Open[1]>ma_2 && Close[1]<ma_2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         if ( rsi_1 > Level_2 & & rsi_0 < Level_2 ) { OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , White ) ;
         Print ( rsi_0 , "     " , rsi_1 ) ; }
         break ;
        }
      if ( OrderType ( ) = = OP_SELL )
        {
         //if(Open[1]<ma_2 && Close[1]>ma_2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         if ( rsi_1 < Level_1 & & rsi_0 > Level_1 ) { OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , White ) ;
          Print ( rsi_0 , "     " , rsi_1 ) ; }
         break ;

yazdırdıktan sonra vardiyayı değiştirdi

rsi_0 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 1 ) ; 
rsi_1 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 2 ) ;
 
Sevgili gurular!
Lütfen göz ardı etmeyin.

OS 64 bit önceden yüklenmiş Windows Vista yüklü bir HP dizüstü bilgisayar satın aldı.
Sorunlar danışmanın çalışmasıyla başladı. İlk başta, anlaşmalar bir şekilde açıldı. Ama bir hafta sonra, danışmanın anlaşmaları hiç açılmadı. Büküp döndüler, sonunda sorunun 64 bit olduğuna karar verdiler. Yeniden yüklendi, 32 bit ve 7 Windows koydu. Bir gün iyi çalıştı ve sonra tekrar çalışmıyor. Belki etkileyen bazı Windows güncellemeleri var?

Diğer bilgisayarlarda (iş arkadaşları) danışman kesintisiz çalışır. Eski dizüstü bilgisayarım artık orada değil ve artık bir şey satın almanın bir yolu yok.

Bu arada, Instagram platformunda çalışıyorum.

Lütfen, birisiyle karşılaştıysa veya bunun nasıl düzeltileceğine dair önerileri varsa, bana bildirin.

 

Basit bir Uzman Danışmanı yeniden yapmama yardım et, bir haftadır savaşıyorum!!!! Ya da tekrar yaz, yoksa tüm danışmanlar çok karmaşık ve onları kendime göre ayarlayamam!!

Sonuç olarak şudur: Bu EA'ya (kavşakta ticaret) satma ve satın alma sinyali veren başka bir MACD göstergesi eklemek istiyorum ve EA bunları paralel olarak yürütmeli. Üçten fazla açık ALIŞ emri ve üçten fazla SAT emri yoktur. Tüm emirler, yalnızca stoploss ve takeprofit ile kapatılmalı ve danışman tarafından zorla kapatılmamalıdır.

 //--------------------------------------------------------------------
extern int     period_EMA           = 28 ,
               period_WMA           = 8 ,
               stoploss             = 50 ,
               takeprofit           = 50 ,
               risk                 = 10 ;
double  LOT ;
//--------------------------------------------------------------------
double SL , TP ;
int TimeBar ; //глобальная переменная
//--------------------------------------------------------------------
int start ( )
{
   if ( TimeBar = = Time [ 0 ] ) return ( 0 ) ;
   if ( TimeBar = = 0 ) { TimeBar = Time [ 0 ] ; return ( 0 ) ; } //первый запуск программы
   double EMA0 = iMA ( NULL , 0 , period_EMA , 0 , MODE_EMA , PRICE_OPEN , 0 ) ;
   double WMA0 = iMA ( NULL , 0 , period_WMA , 0 , MODE_LWMA , PRICE_OPEN , 0 ) ;
   double EMA1 = iMA ( NULL , 0 , period_EMA , 0 , MODE_EMA , PRICE_OPEN , 1 ) ;
   double WMA1 = iMA ( NULL , 0 , period_WMA , 0 , MODE_LWMA , PRICE_OPEN , 1 ) ;
   if ( EMA0 < WMA0 & & EMA1 > WMA1 ) //Buy
   {
      TimeBar = Time [ 0 ] ;                            
      TP  = Ask + takeprofit * Point ;
      SL  = Ask - stoploss * Point ;     
      LOT = LOT ( risk , 1 ) ;
      CLOSEORDER ( "Sell" ) ;
      OPENORDER ( "Buy" ) ;
   }
   if ( EMA0 > WMA0 & & EMA1 < WMA1 ) //Sell
   {
      TimeBar = Time [ 0 ] ;                            
      TP = Bid - takeprofit * Point ;
      SL = Bid + stoploss * Point ;            
      LOT = LOT ( risk , 1 ) ;
      CLOSEORDER ( "Buy" ) ;
      OPENORDER ( "Sell" ) ;
   }
return ( 0 ) ;
}
//--------------------------------------------------------------------
void CLOSEORDER ( string ord )
{
   for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - )
   {                                               
      if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = true )
      {
         if ( OrderSymbol ( ) ! = Symbol ( ) ) continue ;
         if ( OrderType ( ) = = OP_BUY & & ord = = "Buy" )
            OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , CLR_NONE ) ; // Close Buy
         if ( OrderType ( ) = = OP_SELL & & ord = = "Sell" )
            OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , CLR_NONE ) ; // Close Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER ( string ord )
{
   int error ;
   if ( ord = = "Buy" ) error = OrderSend ( Symbol ( ) , OP_BUY , LOT , Ask , 2 , SL , TP , "" , 1 , 3 ) ;
   if ( ord = = "Sell" ) error = OrderSend ( Symbol ( ) , OP_SELL , LOT , Bid , 2 , SL , TP , "" , - 1 , 3 ) ;
   if ( error = = - 1 ) //неудачная покупка OK
   {  
      ShowERROR ( error , 0 , 0 ) ;
   }
return ;
}                  
//--------------------------------------------------------------------
void ShowERROR ( int Ticket , double SL , double TP )
{
   int err = GetLastError ( ) ;
   switch ( err )
   {                  
      case 1 :                                                                               return ;
      case 2 :   Alert ( "Нет связи с торговым сервером   "              , Ticket , " " , Symbol ( ) ) ; return ;
      case 3 :   Alert ( "Error  неправильные параметры   Ticket " ,       Ticket , " " , Symbol ( ) ) ; return ;
      case 130 : Alert ( "Error близкие стопы   Ticket " ,                 Ticket , " " , Symbol ( ) ) ; return ;
      case 134 : Alert ( "Недостаточно денег   " ,                         Ticket , " " , Symbol ( ) ) ; return ;
      case 146 : Alert ( "Error Подсистема торговли занята " ,             Ticket , " " , Symbol ( ) ) ; return ;
      case 129 : Alert ( "Error Неправильная цена " ,                      Ticket , " " , Symbol ( ) ) ; return ;
      case 131 : Alert ( "Error Неправильный объем " ,                     Ticket , " " , Symbol ( ) ) ; return ;
      case 4051 : Alert ( "Error Недопустимое значение параметра функции " , Ticket , " " , Symbol ( ) ) ; return ;
      case 4105 : Alert ( "Error Ни один ордер не выбран " ,                Ticket , " " , Symbol ( ) ) ; return ;
      case 4063 : Alert ( "Error Ожидается параметр типа integer " ,        Ticket , " " , Symbol ( ) ) ; return ;
      case 4200 : Alert ( "Error Объект уже существует " ,                  Ticket , " " , Symbol ( ) ) ; return ;
      default :  Alert ( "Error  " , err , "   Ticket " ,                     Ticket , " " , Symbol ( ) ) ; return ;
   }
}
//--------------------------------------------------------------------
double LOT ( int risk , int ord )
{
   double MINLOT = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ;
   LOT = AccountFreeMargin ( ) * risk / 100 / MarketInfo ( Symbol ( ) , MODE_MARGINREQUIRED ) / ord ;
   if ( LOT > MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ) LOT = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ;
   if ( LOT < MINLOT ) LOT = MINLOT ;
   if ( MINLOT < 0.1 ) LOT = NormalizeDouble ( LOT , 2 ) ; else LOT = NormalizeDouble ( LOT , 1 ) ;
   return ( LOT ) ;
}
//--------------------------------------------------------------------

 
Serg-sn >> :

Basit bir Uzman Danışmanı yeniden yapmama yardım et, bir haftadır savaşıyorum!!!! Ya da tekrar yaz, yoksa tüm danışmanlar çok karmaşık ve onları kendime göre ayarlayamam!!

Sonuç olarak şudur: Bu EA'ya (kavşakta ticaret) satma ve satın alma sinyali veren başka bir MACD göstergesi eklemek istiyorum ve EA bunları paralel olarak yürütmeli. Üçten fazla açık ALIŞ emri ve üçten fazla SAT emri yoktur. Tüm emirler, yalnızca stoploss ve takeprofit ile kapatılmalı ve danışman tarafından zorla kapatılmamalıdır.

 double MacdMain0 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_MAIN , PRICE_OPEN , 0 ) ;
çift MacdSignal0 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_SİNYAL , PRICE_OPEN , 0 ) ;
çift MacdMain1 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_MAIN , PRICE_OPEN , 1 ) ;
çift MacdSignal1 = iMACD ( NULL , 0 , period_fast, period_slow , period_signal, 0 , MODE_SİNYAL , PRICE_OPEN , 1 ) ;
if ( EMA0 < WMA0 && EMA1 > WMA1 && MacdMain0 >MacdSignal0 && MacdMain1 < MacdSignal1 )

peki, hareketlere benzer şekilde mcd ekleyecektir
 
Bununla her şey açık, ancak sipariş nasıl verilir? Orijinalde, Diyelim ki Al bir Sat - Al sinyali ile ayarlandı, kapanıyor ve Sat! Ve kapatmaya ihtiyacım yok, Uzman Danışman duraklarla sipariş vermeli ve bu kadar!
 

Aynı danışman EMA _ WMA için bir sorum, daha doğrusu bir isteğim var. mq4 ve ayrıca kapatma için. Take ile kapatmak yerine mümkün mü Kar veya buna ek olarak, MA'nın maksimum/minimum değerine göre bir siparişi kapatma yeteneği ekleyin. Bana öyle geliyor ki piyasadan çıkmak için en iyi seçenek bu (tabii ki yanılıyor olabilirim). Lütfen, kim için zor değil, bu danışmana böyle bir işlev ekleyin.

Başka bir küçük soru. Ayarlarda stoploss 50 puan ( MasterForex ) olmasına rağmen " Hata . Durakları kapat " mesajı çıkıyor . Bu ne anlama geliyor?