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

 
alsu :
독점적인 것들, 아마도 MS VisualStudio, 무료 것들도 있습니다. 예를 들어 CodeBlocks는 꽤 좋습니다.
감사합니다. VISUAL C++ 2010 EXPRESS 및 CodeBlocks로 시작하겠습니다.
 
rustein :

좋은 컴파일러와 편집기를 알려주는 C, C ++, C #을 배우기 시작했습니다.

고맙습니다.


아직도 잊었다

 
freeDRIVER :


아직도 잊었다

흥미로운 프로젝트 읽어주셔서 감사합니다.
 

불행히도 위의 제안 중 어느 것도 도움이 되지 않았습니다.

질문 https://www.mql5.com/ru/forum/138609/page9#edit_form 은 여전히 관련이 있습니다.

도와주세요!

 

특정 기간 동안 가장 작은 양초 또는 막대를 표시하는 표시기가 필요합니다. 예를 들어 4H 차트에서 5일 동안 가장 작은 양초 또는 막대를 표시합니다.

표시기 설정 에서 설정할 요일 또는 시간. 그리고 나는 이 양초를 Fractals 표시기에서와 같이 화살표로 표시했습니다.

또는 그런 것.
 
Fox_RM :

불행히도 위의 제안 중 어느 것도 도움이 되지 않았습니다.

질문 https://www.mql5.com/ru/forum/138609/page9#edit_form 은 여전히 관련이 있습니다.

도와주세요!

변경 사항이 포함된 코드를 다시 게시하십시오.
 
Fox_RM :

불행히도 위의 제안 중 어느 것도 도움이 되지 않았습니다.

질문 https://www.mql5.com/ru/forum/138609/page9#edit_form 은 여전히 관련이 있습니다.

도와주세요!

당신은 이미 "카트와 작은 카트"에 대해 조언을 받았습니다. 첫째, 질문이 원래 코드를 게시물로 다시 밀어 넣는 것은 옳지 않습니다(댓글이 표시되지 않거나 오히려 수정됨). 둘째, 오류를 찾기 위한 알고리즘을 스스로 개발해야 합니다. 아무도 중간 결과를 인쇄하는 것보다 더 나은 것을 (MQL4 내에서) 생각해내지 못했습니다. 저자만이 자신이 만든 코드의 논리를 알고 있기 때문에 논리적 오류를 먼저 볼 수 있습니다... ;)))
 

최신 버전:

 //+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link       "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip, TP_UP[ 20 ],TP_DN[ 20 ],TP_UPMin[ 20 ],TP_DNPl[ 20 ] ; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i= 0 ,limit,k= 0 ,old_sell= 0 ,old_bay= 0 ;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

   ArrayResize (MA1, Bars ); ArrayResize (MA2, Bars );

raz= 20 - Bars ;                    //--- расчет по
count= Bars +raz;                 //--- последним 20 барам
for (i= 0 ;i<count;i++)           //--- вроде так
{  
    price = Close[i]/ Point ;    
    delta = price-old_price;
          
     if (!time_Bar)time_Bar=Time[ 0 ];
    col_bar = iBarShift ( NULL , 0 ,time_Bar)- iBarShift ( NULL , 0 ,Time[i]);
     if (col_bar >= 1 )
    
    {time_Bar=Time[i];sum_pip_bay= 0 ;
    sum_pip_sell= 0 ;sum_pip= 0 ;
    old_bay= 0 ;old_sell= 0 ;sum_tick= 0 ;
    count_plus= 0 ;count_minus= 0 ;}
     
     //---- Расчет UP
     if (delta>= 0 )
    { if (delta> 100 )delta= 1 ;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
     if (delta< 0 )
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+ MathAbs (sum_pip_sell);
     
       //---
  
         if (MA1[i]>= 0 ){TP_UP[i]=MA1[i];} else {TP_UPMin[i]=MA1[i];}
         if (MA2[i]<= 0 ){TP_DN[i]=MA2[i];} else {TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if (NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs (sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>= 1.5 ) OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 ) OrderSend ( Symbol (),OP_BUY, 0.1 , Ask , 2 , 50 , 20 );  //--- на новом баре + Ask
   }    
   }                
   return ( 0 );
}

//---- Функции
double Sredn( double ArrSr[])
{
double a= 1 ,c,step= 1 / 20 ;
for ( int i= 0 ;i< 20 ;i++)                         //--- тут привел в соответствие
{ if (ArrSr[i]== 0 ){a*= 1 ;} else {a*= MathAbs (ArrSr[i]);}}
c= MathPow (a, step);
   return (c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0 ;
   datetime curbar = Time[ 0 ];
   if (lastbar!=curbar)
   {
      lastbar=curbar;
       return (true);
   }
   else
   {
       return (false);
   }
}
 
Fox_RM :

최신 버전:

 double a= 1 ,c,step= 1 / 20 ;

1) 단계 변수가 0입니다. 0.05 를 입력하거나 1./20 처럼 나눕니다.

2) 그 후 트랜잭션을 열려고 시도하지만

 OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 )

50과 20 대신 (_absolute_) 손절매와 이익실현 수준이 있어야 합니다.


추신: 저는 미개봉의 근본적인 순간만 봤습니다. 당연히 많은 것들이 최적화되고 추가되어야 합니다.

 
Fox_RM :

최신 버전:

그러나 이 "마조히즘"은 다음과 같습니다.

raz= 20 - Bars ;                     //--- расчет по
count= Bars +raz;                 //--- последним 20 барам

다음을 받아들이고 정직하게 진술하지 않는 이유는 무엇입니까?

count = 20 ;

그리고 한 번에 차원을 선언하여 이러한 배열 MA1[] 및 MA2[]를 고문하지 마십시오.

 double MA1[20],MA2[20];

그리고 이것으로:

 if (Sredn(TP_UP)>= 1.5 ) OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 ) OrderSend ( Symbol (),OP_BUY, 0.1 , Ask , 2 , 50 , 20 );  //--- на новом баре + Ask

지식의 기원으로 돌아가야 합니다. 스톱의 크기를 핍 단위로 거래 주문 에 전달하지만 LEVELS를 전송해야 합니다!!! 그리고 온라인으로 작업하려면 LEVELS 값(가격, SL 및 TP)이 NORMALIZE에 필요합니다!!!

 if (Sredn(TP_UP)>= 1.5 )
OrderSend ( Symbol (),OP_SELL, 0.1 ,NormalizeDouble ( Bid,Digits) , 2 , NormalizeDouble (Ask+50*Point, Digits) , NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 )
OrderSend ( Symbol (),OP_BUY, 0.1 , NormalizeDouble(Ask,Digits) , 2 ,NormalizeDouble(Bid- 50 *Point,Digits),NormalizeDouble(Bid+ 20 *Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

그리고 한 가지 더: 처음부터 "성인의 방식으로" 익숙해지십시오 - 주문에 MAGIC을 할당하십시오!!! 앞으로도 잘 부탁드립니다!!!