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

 

Merhaba.

Aşağıdaki döngüyü oluşturdum:

 for (j= 0 ;j< ArraySize (fiboOrd);j++)
 {
   if (fiboOrd[j]==d && TP== 0 ) TP= NormalizeDouble (Asia*fibo[j], Digits );
   if (fiboOrd[j]==d && TP> 0 )  Price= NormalizeDouble (Asia*fibo[j], Digits );
 }

Sorun şudur: Nedense, TP değişkeninin değeri sadece j'nin ilk değeri için bulunurken, Price değişkeninin değeri, j'nin tüm değerleri için bulunur.

Tüm j değerleri için tüm TP değerleri nasıl bulunur? Benim hatam ne?

Şimdiden teşekkür ederim.

 
nemo811 :

Tüm j değerleri için tüm TP değerleri nasıl bulunur? Benim hatam ne?

Soruyu kaldırdım, kendim çözdüm.

 
frixer :
Merhaba, lütfen bana son mumun alt ve üst noktalarını nasıl bulacağımı söyle, örneğin


Sonuncusu henüz tam olarak oluşmamış olan mı?

Low_0=Low[ 0 ];                                 // Low_0 присвоена мин. цена 0-го бара
High_0=High[ 0 ];                               // High_0 присвоена макс. цена 0-го бара
 

Test cihazında her şey normal şekilde açılmasına rağmen, danışmanın neden gerçek ticarette fırsatlar açmayabileceğini söyleyin? Ve günlükte hata yok. Alpari demo sunucusu.

 
sss2019 :

Test cihazında her şey normal şekilde açılmasına rağmen, danışmanın neden gerçek ticarette fırsatlar açmayabileceğini söyleyin? Ve günlükte hata yok. Alpari demo sunucusu.


yani hemen söylemeyeceksin - birçok seçenek var .... bana biraz daha ayrıntı söyleyebilir misin?
 
elmucon :

yani hemen söylemeyeceksin - birçok seçenek var .... bana biraz daha ayrıntı söyleyebilir misin?


Evet bilmiyorum, her şey yolunda gibi görünüyor, test cihazında her şey saat gibi çalışıyor, ancak demo hesapta zamanı çoktan geldi, ancak fırsatlar açılmadı ve bir sonraki saat de. kodu görebiliyor musun

 //+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| extern variables                                                 |
//+------------------------------------------------------------------+

extern int GMT = 2 ;
extern int InTime = 23 ;
extern int OrderDuration = 2 ;
extern double Lot = 0.1 ;
extern string MyComment = "Return" ;
extern int Slippage = 3 ;
extern int StopLoss = 150 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int CurrentHour = TimeHour ( TimeCurrent ());
   int CurrentMinute = TimeMinute ( TimeCurrent ());
   datetime OrderExpiriation = TimeCurrent () + 3600 * OrderDuration;
  
   double MyPoint = Point ;
   if ( Digits == 3 || Digits == 5 )
    {
    MyPoint = Point * 10 ;
    }
//----
   if ( TimeHour ( TimeCurrent ()) + GMT == InTime && TimeMinute ( TimeCurrent ()) == 0 && OrdersTotal () == 0 )
     {
//---- Sending first order - Buy
     if ( OrderSend ( Symbol (),OP_BUYLIMIT,Lot,Open[ 0 ] - 10 * MyPoint,Slippage,Open[ 0 ] - StopLoss * MyPoint,Open[ 0 ],MyComment, 16523 ,OrderExpiriation, Green ) > 0 )
       {
       Alert ( "Первый ордер запущен" );
       } else
       {
       Alert ( "Первый ордер не запущен" );
       }
//---- Sending second order Buy
     if ( OrderSend ( Symbol (),OP_BUYLIMIT,Lot,Open[ 0 ] - 15 * MyPoint,Slippage,Open[ 0 ] - StopLoss * MyPoint,Open[ 0 ],MyComment, 16523 ,OrderExpiriation, Green ) > 0 )
       {
       Alert ( "Второй ордер запущен" );
       } else
       {
       Alert ( "Второй ордер не летит" );
       }
//---- Sending third order - Sell
     if ( OrderSend ( Symbol (),OP_SELLLIMIT,Lot,Open[ 0 ] + 10 * MyPoint,Slippage,Open[ 0 ] + StopLoss * MyPoint,Open[ 0 ],MyComment, 16523 ,OrderExpiriation, Red ) > 0 )
       {
       Alert ( "Третий ордер отжахан" );
       } else
       {
       Alert ( "Третий ордер не отжахан" );
       }
//---- Sending fourth order - Sell
     if ( OrderSend ( Symbol (),OP_SELLLIMIT,Lot,Open[ 0 ] + 15 * MyPoint,Slippage,Open[ 0 ] + StopLoss * MyPoint,Open[ 0 ],MyComment, 16523 ,OrderExpiriation, Red ) > 0 )
       {
       Alert ( "Четвертый ордер запущен" );
       } else
       {
       Alert ( "Четвертый ордер не запущен" );
       }

     }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
Günlükte veya başka bir yerde hata yok. Kodda herhangi bir hata yoksa (terminalde birdenbire bazı hatalar oluştu), o zaman zaman içinde bir şeyleri karıştırmış olmam daha olasıdır.
 
rsi dönemi değiştirilemedi.
 
kolyango :


Sonuncusu henüz tam olarak oluşmamış olan mı?

Teşekkürler, yardımcı oldu ama yine de bir sorum var, kendim çözmeye çalışacağım
 

Zor değilse yardım edin, akıllı bir programcı için her şey şanslı değil, basit bir TS için bir danışman yazdılar, ancak doğru çalışmıyor!

Bu nedenle, resme bakın, 2 MA'nın kesişiminde bir sipariş açar, hızlı olanı aşağıdan yukarıya doğru geçer - satın alın ve tam tersi, danışman xs siparişleri nasıl açar, resimde açıklayıcı bir örnek:

1 - körfez 11/03/2011, yakınlarda kavşak yok;

3 - aynı 11/04/2011 tarihinde satmak;

5 - 11/07/2011 itibariyle, yine siparişin neden açıldığı belli değil.

Ve kodun kendisi:

 extern int period_EMA = 85 ,
period_WMA = 5 ,
period_RSI = 14 ,
stoploss = 0 ,
takeprofit = 500 ,
risk = 10 ,
Magic = 777 ;
extern bool CloseCounter = false;
extern double Lot = 0.1 ;
extern int TrailingStop = 70 ; //если= 0, то трейлинг по фракталам или свечам
extern int Tip.Fr.or.Candl = 1 ; //если= 0, то трейлинг по фракталам 
//если= 1, то трейлинг по свечам
//--------------------------------------------------------------------
double SL,TP,LOT;
int TimeBar;
//--------------------------------------------------------------------
int start()
{
if (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 );
double RSI = iRSI ( NULL , 0 ,period_RSI, PRICE_OPEN , 0 );
if (EMA0 < WMA0 && EMA1 > WMA1 && RSI > 50 )
{
TimeBar=Time[ 0 ]; 
if (takeprofit!= 0 ) TP = Ask + takeprofit* Point ;
if (stoploss!= 0 ) SL = Ask - stoploss* Point ; 
LOT = LOT(risk, 1 );
if (CloseCounter) CLOSEORDER( "Sell" );
OPENORDER ( "Buy" );
}
if (EMA0 > WMA0 && EMA1 < WMA1 && RSI < 50 )
{
TimeBar=Time[ 0 ]; 
if (takeprofit!= 0 ) TP = Bid - takeprofit* Point ;
if (stoploss!= 0 ) SL = Bid + stoploss* Point ; 
LOT = LOT(risk, 1 );
if (CloseCounter) CLOSEORDER( "Buy" );
OPENORDER ( "Sell" );
}
TrailingStop();
return ( 0 );
}
//--------------------------------------------------------------------
void CLOSEORDER( string ord)
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{ 
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true)
{
if ( OrderSymbol ()!= Symbol ()||Magic!= OrderMagicNumber ()) continue ;
if ( OrderType ()==OP_BUY && ord== "Buy" )
OrderClose ( OrderTicket (), OrderLots (),Bid, 3 , CLR_NONE );
if ( OrderType ()==OP_SELL && ord== "Sell" )
OrderClose ( OrderTicket (), OrderLots (),Ask, 3 , CLR_NONE );
} 
}
}
//--------------------------------------------------------------------
void OPENORDER( string ord)
{
int error;
if (ord== "Buy" ) error= OrderSend ( Symbol (),OP_BUY, LOT,Ask, 2 ,SL,TP, "EMA WMA RSI" ,Magic, 3 );
if (ord== "Sell" ) error= OrderSend ( Symbol (),OP_SELL,LOT,Bid, 2 ,SL,TP, "EMA WMA RSI" ,Magic, 3 );
if (error==- 1 ) 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 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 ;
default : Alert ( "Error " ,err, " Ticket " , Ticket, " " , Symbol ()); return ;
}
}
//--------------------------------------------------------------------
double LOT( int risk, int ord)
{
if (Lot!= 0 ) return (Lot);
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);
}
//--------------------------------------------------------------------
void TrailingStop()
{
int tip,Ticket;
bool error;
double StLo,OSL,OOP;
for ( int i= 0 ; i< OrdersTotal (); i++) 
{ if ( OrderSelect (i, SELECT_BY_POS)==true)
{ tip = OrderType ();
if (tip< 2 && OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{
OSL = OrderStopLoss ();
OOP = OrderOpenPrice ();
Ticket = OrderTicket ();
if (tip==OP_BUY) 
{
StLo = SlLastBar( 1 ,Bid,Tip.Fr.or.Candl,TrailingStop); 
if (StLo <= OOP) continue ;
if (StLo > OSL)
{ error= OrderModify (Ticket,OOP, NormalizeDouble (StLo, Digits ),
OrderTakeProfit (), 0 , White );
Comment ( "TrailingStop " ,Ticket, " " , TimeToStr ( TimeCurrent (),TIME_MINUTES));
Sleep ( 500 );
if (!error) Comment ( "Error order " ,Ticket, " TrailingStop " ,
GetLastError (), " " , Symbol (), " SL " ,StLo);
}
} 
if (tip==OP_SELL) 
{
StLo = SlLastBar(- 1 ,Ask,Tip.Fr.or.Candl,TrailingStop); 
if (StLo== 0 ) continue ; 
if (StLo >= OOP) continue ;
if (StLo < OSL || OSL== 0 )
{ error= OrderModify (Ticket,OOP, NormalizeDouble (StLo, Digits ),
OrderTakeProfit (), 0 , White );
Comment ( "TrailingStop " +Ticket, " " , TimeToStr ( TimeCurrent (),TIME_MINUTES));
Sleep ( 500 );
if (!error) Comment ( "Error order " ,Ticket, " TrailingStop " ,
GetLastError (), " " , Symbol (), " SL " ,StLo);
}
} 
}
}
}
}
//--------------------------------------------------------------------
double SlLastBar( int tip, double price, int tipFr, int tral)
{
double fr;
int jj,ii,delta= 5 ;
if (tral!= 0 )
{
if (tip== 1 ) fr = Bid - tral* Point ; 
else fr = Ask + tral* Point ; 
}
else
{
if (tipFr== 0 )
{
if (tip== 1 )
for (ii= 1 ; ii< 100 ; ii++) 
{
fr = iFractals ( NULL , 0 ,MODE_LOWER,ii);
if (fr!= 0 ) if (price-delta* Point > fr) break ;
else fr= 0 ;
}
if (tip==- 1 )
for (jj= 1 ; jj< 100 ; jj++) 
{
fr = iFractals ( NULL , 0 ,MODE_UPPER,jj);
if (fr!= 0 ) if (price+delta* Point < fr) break ;
else fr= 0 ;
}
}
else
{
if (tip== 1 )
for (ii= 1 ; ii< 100 ; ii++) 
{
fr = iLow ( NULL , 0 ,ii);
if (fr!= 0 ) if (price-delta* Point > fr) break ;
else fr= 0 ;
}
if (tip==- 1 )
for (jj= 1 ; jj< 100 ; jj++) 
{
fr = iHigh ( NULL , 0 ,jj);
if (price+delta* Point < fr) break ;
else fr= 0 ;
}
}
}
/* if (tip== 1)
{
ObjectDelete("SL Buy");
ObjectDelete("SL-");
ObjectCreate("SL Buy",OBJ_ARROW,0,TIME,fr,0,0,0,0); 
ObjectSet ("SL Buy",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Buy",OBJPROP_COLOR, Blue);
ObjectCreate("SL-",OBJ_ARROW,0,TIME,price-delta*POINT,0,0,0,0); 
ObjectSet ("SL-",OBJPROP_ARROWCODE,4);
ObjectSet ("SL-",OBJPROP_COLOR, Blue);
}
if (tip==-1)
{
ObjectDelete("SL Sell");
ObjectDelete("SL+");
ObjectCreate("SL Sell",OBJ_ARROW,0,TIME,fr,0,0,0,0);
ObjectSet ("SL Sell",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Sell", OBJPROP_COLOR, Green);
ObjectCreate("SL+",OBJ_ARROW,0,TIME,price+delta*POINT,0,0,0,0); 
ObjectSet ("SL+",OBJPROP_ARROWCODE,4);
ObjectSet ("SL+",OBJPROP_COLOR, Green);
}*/
return (fr);
}
//--------------------------------------------------------------------



Şimdiden çok teşekkür ederim!

 

İyi günler, lütfen bana "2011.12.10 12:46:26 TestGenerator: unmatched data error (2011.11.29 11:00'da 2225 hacim sınırı aşıldı)" hatasının ne anlama geldiğini ve bunu nasıl düzeltebilirim söyleyin....