[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 420

[Deleted]  

안녕하세요.

다음 루프를 만들었습니다.

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

문제는 다음과 같습니다. 어떤 이유로 변수 TP의 값은 j의 첫 번째 값에 대해서만 발견되는 반면, 변수 Price의 값은 j의 모든 값에 대해 발견됩니다.

모든 j 값에 대한 모든 TP 값을 찾는 방법은 무엇입니까? 내 실수가 뭐야?

미리 감사드립니다.

[Deleted]  
nemo811 :

모든 j 값에 대한 모든 TP 값을 찾는 방법은 무엇입니까? 내 실수가 뭐야?

나는 질문을 제거하고 스스로 알아 냈습니다.

[Deleted]  
frixer :
안녕하세요, 예를 들어 마지막 촛불의 저점과 고점을 찾는 방법을 알려주십시오.


마지막은 아직 완전히 형성되지 않은 것입니까?

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

테스터에서 모든 것이 정상적으로 열리지만 고문이 실제 거래에서 거래를 열지 못하는 이유를 알려주십시오. 그리고 로그에는 오류가 없습니다. 알파리 데모 서버.

 
sss2019 :

테스터에서 모든 것이 정상적으로 열리지만 고문이 실제 거래에서 거래를 열지 못하는 이유를 알려주십시오. 그리고 로그에는 오류가 없습니다. 알파리 데모 서버.


그래서 당신은 즉시 말하지 않을 것입니다 - 많은 옵션이 있습니다 .... 더 자세한 정보를 알려주실 수 있습니까?
 
elmucon :

그래서 당신은 즉시 말하지 않을 것입니다 - 많은 옵션이 있습니다 .... 더 자세한 정보를 알려주실 수 있습니까?


예, 잘 모르겠습니다. 모든 것이 테스터의 시계처럼 작동하지만 데모 계정 에서는 이미 시간이 왔지만 거래가 열리지 않았으며 다음 시간도 마찬가지입니다. 코드를 볼 수 있습니까

 //+------------------------------------------------------------------+
//|                                                         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 );
  }
//+------------------------------------------------------------------+
로그나 그 외 어디에도 오류가 없습니다. 코드에 오류가 없으면(글쎄, 갑자기 터미널에 버그가 있음) 시간이 지남에 따라 뭔가를 혼동했을 가능성이 더 큽니다.
 
rsi 기간을 변경할 수 없습니다.
 
kolyango :


마지막은 아직 완전히 형성되지 않은 것입니까?

감사합니다 도움이 되었지만 여전히 질문이 있습니다 스스로 해결해 보겠습니다
[삭제]  

어렵지 않은 경우 도움이됩니다. 지능형 프로그래머에게는 모든 것이 운이 좋지 않습니다. 간단한 TS에 대한 고문을 작성했지만 올바르게 작동하지 않습니다!

따라서 그림을보고 2 MA의 교차점에서 주문을 여십시오. 빠른 것은 하단에서 느린 것을 교차합니다. 구매 및 그 반대의 경우도 마찬가지입니다.

1 - 베이 11/03/2011, 근처에 교차로가 없습니다.

3 - 2011년 11월 4일에 판매합니다.

5 - 2011년 11월 7일 구매, 다시 주문이 시작된 이유가 명확하지 않습니다.

그리고 코드 자체:

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



미리 대단히 감사합니다!

[Deleted]  

안녕하세요. "2011.12.10 12:46:26 TestGenerator: 일치하지 않는 데이터 오류(2011.11.29 11:00에서 볼륨 제한 2225 초과)" 오류의 의미와 해결 방법을 알려주십시오....