[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 741

 

그것이 그가 전문가에 서있는 방식입니다

 bool b= 0 ,s= 0 , //соответственно бай или селл  
bs= 0 , // если закрытие по стоплоссу ордера бай
ss= 0 , // если закрытие по стоплоссу ордера sell
bt= 0 ,
st= 0 ; //      то же по ТП
double bl= 0 ,sl= 0 ; // лоты соответсвенно для бай и селл


for ( int cnt=OrdersHistoryTotal();cnt> 0 ;cnt--)
     {
OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY);
{ if (OrderMagicNumber()== mag &&
OrderSymbol()== Symbol ()) 
{ if (OrderType() == OP_BUY )  {b= 1 ; if (OrderClosePrice()==OrderTakeProfit()) bt= 1 ; if (OrderClosePrice()==OrderStopLoss()) bs= 1 ; bl=OrderLots()* 10 ; break ;}
if (OrderType() == OP_SELL)  {s= 1 ; if (OrderClosePrice()==OrderTakeProfit()) st= 1 ; if (OrderClosePrice()==OrderStopLoss()) ss= 1 ; sl=OrderLots()* 10 ; break ;}
            }
         }
      }


} //end

if (bs== 1 ||bl== 1 )
{   
    NewOrder1(OP_BUYLIMIT,Lot);
    
    Today=TimeDay( TimeCurrent ());}
    

int NewOrder1( int Cmd, double Lot)
{ double TP= 0 ; //тейкпрофит
double SL= 0 ; //стоплосс
double PR= 0 ; //Цена
double LT= 0 ; //Лот
while (!IsTradeAllowed()) Sleep ( 100 );
if (Cmd==OP_BUYLIMIT)
   {PR=Ask- Point *h;
     if (TakeProfit> 0 ) TP=PR+TakeProfit* Point ;
     if (StopLoss> 0 ) SL=PR-StopLoss* Point ;
     if (Lot> 0 ) LT= 3 *Lot;}
int tic1= OrderSend ( Symbol (),Cmd,LT,PR, 3 ,SL,TP, 0 ,mag, 0 , CLR_NONE );

if (tic1< 0 ) Print ( GetLastError ());

return ( 0 );}





 
artmedia70 :
부울 변수는 처음에 false로 초기화되지 않으며 일반적으로 루프에 들어가기 전에 0(거짓)으로 설정합니다. 루프를 종료하면 루프에서 값이 할당됩니다(더 나은 1보다 true) 그리고 루프에 대한 다음 항목까지 그들은 그것들을 가질 것이고 가질 것입니다. 주문 개설이 이러한 변수의 값에 엄격하게 의존하는 경우 주문을 개설한 후 시장에서 이 위치의 존재를 확인하고 존재하는 경우 변수를 재설정합니다(거짓).

그리고 코드에서 설명할 수 있는

 
artmedia70 :
현재 막대의 ADX 값(첫 번째 막대가 더 좋음)과 이전 막대의 ADX 값(두 번째 막대가 더 좋음)을 비교합니다.

이마에 바보 같은 경우 다음과 같습니다.

하지만 너무 추합니다. 이중 변수에 ADX 값을 할당하고 변수로 추가 작업을 하는 것이 좋습니다...






당신의 도움을 주셔서 대단히 감사합니다:)
 

친구! 추세선을 다시 만들 때 발생하는 불필요한 신호를 제거하는 방법을 알 수 없습니다. 추세선(예: 내림차순)은 주어진 막대 간격에서 발견되는 가장 큰 극값에서 가장 작은 극한까지 작성됩니다. 문제는 새로운 낮은 극값이 발생하면 추세선이 (의도한 대로) 해당 극한값으로 점프한다는 것입니다.

그러나 추세선의 첫 번째 막대에도 추세선 값이 있는 수준이 만들어지고 표시선과의 교차점이 신호를 제공합니다. 첫 번째 막대의 표시선이 이 수준 아래에 있고 두 번째 막대에서 이 수준 위에 있는 경우 하향식 교차점이 있습니다.

그래서... 추세선이 새로운 최소 극값으로 점프할 때 두 번째 막대의 칠면조 선이 추세선 및 구성된 수준보다 높고 첫 번째 막대에서 낮아질 때 상황이 발생합니다. 즉, 불필요한 매도 신호가 나타납니다(이 경우):


그림은 추세선이 어떻게 새로운 극값으로 점프했는지(위치는 아래쪽 화살표로 표시됨)와 첫 번째 막대(가로 빨간색 선)에서 새 추세선의 가격 수준을 보여줍니다.
2차에서는 AD선보다 낮아지고, 1차에서는 AD선이 가격대 아래로 떨어졌습니다...
이에 따라 추세선을 하한값으로 이동시켜 불필요한 신호를 시뮬레이션 하였다... 동일한 불필요한 신호가 조금 더 일찍 발생 -
하늘색 세로선으로 표시해 두었습니다...

따라서 질문 - 그러한 상황을 피하는 방법은 무엇입니까? 뭔가 생각해내느라 지쳤는데...
이견있는 사람? 감사해요... :)

 
profitinvesting :
당신의 도움을 주셔서 대단히 감사합니다:)
네, 상관없습니다 :)
 
ToLik_SRGV :

시작 함수의 맨 처음에 이 함수를 호출하는 줄을 추가합니다.

EA는 새 막대에서만 1회 켜집니다.

친애하는 아나톨리. 이 코드에 대해 대단히 감사합니다. 또 다른 질문은 항상 작동하게 하는 방법이지만 바에서 1개의 거래만 할 수 있습니까?
 
artmedia70 :
그런 다음 주문을 개시한 후 시장에서 이 위치의 존재를 확인하고 존재하는 경우 변수를 재설정합니다(거짓).

내 순서대로 구현하는 방법을 알려주세요.

값을 재설정하려면 주문에 어떤 기능을 삽입해야 합니까?

 
FoxUA :

내 순서대로 구현하는 방법을 알려주세요.

값을 재설정하려면 주문에 어떤 기능을 삽입해야 합니까?


시장에서 주문이 있는지 확인한 직후 변수에 값을 할당합니다 . 예를 들어 Variable1 = false;
주문을 위한 기준 역할을 하는 주기에서 값 "true"를 받은 변수는 주문한 후 다시 "false" 값을 받아야 합니다. 그렇지 않으면 주문이 일괄 처리됩니다. 따라서 이러한 변수를 false 로 설정합니다.
 
artmedia70 :
시장에서 주문이 있는지 확인한 직후 변수에 값을 할당합니다. 예를 들어 Variable1 = false;
주문을 위한 기준 역할을 하는 주기에서 값 "true"를 받은 변수는 주문한 후 다시 "false" 값을 받아야 합니다. 그렇지 않으면 주문이 일괄 처리됩니다. 따라서 이러한 변수를 false 로 설정합니다.

2일 동안 잠을 못잤고 이 전문가와 함께 괴로워하고 있는 것이 영향을 미칠 것 같습니다. 말씀하신 내용에서 무엇을, 어디에 넣어야 하는지 이해하지 못해서 이러한 값을 입력하는 것이 어려울까요? ​내가 작업한 코드에서 또는 그냥 함수를 작성하고 정확히 그것이 내 퍼즐의 마지막 조각을 어디에 넣어야 하는지 말하고 어디에 어떻게 붙일지에 집중할 수 없습니다

 
FoxUA :

2일 동안 잠을 못잤고 이 전문가와 함께 괴로워하고 있는 것이 영향을 미칠 것 같습니다. 말씀하신 내용에서 무엇을, 어디에 넣어야 하는지 이해하지 못해서 이러한 값을 입력하는 것이 어려울까요? ​내가 작업한 코드에서 또는 그냥 함수를 작성하고 정확히 그것이 내 퍼즐의 마지막 조각을 어디에 넣어야 하는지 말하고 어디에 어떻게 붙일지에 집중할 수 없습니다

코드 다루기를 꺼림(사악하지만 솔직히 :)). 결과적으로 얻고자 하는 것이 무엇인지 정확히 말씀해 주시면 원하는 기능을 작성해 드리겠습니다. 솔직히 나에게는 더 쉬울 것이다. 내 코드를 알아내고 싶습니다... :)

... 아니면 누워서 자고 다음날 모든 퍼즐이 모일 것입니다 ... :) 나는 개인적으로 아무것도 이해하지 못하면 이것을합니다 ... 그건 그렇고, 나는 잠자리에 들었습니다-5시 반 아침에 벌써 ...