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

 
artmedia70 :

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

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


주문 후, 주문 기준이 된 변수는 다시 "0" 값을 받아야 하며,

 
누가 알아. 통과된 통화 틱의 비율과 함께 RSI와 같은 지표의 이동 비율(자체 규모)을 어떻게 얻을 수 있습니까? 예를 들어 RSI가 0에서 50으로 바뀌면 몇 점과 같을지 설명하겠습니다.
 
Infinity :
누가 알아. 통과된 통화 틱의 비율과 함께 RSI와 같은 지표의 이동 비율(자체 규모)을 어떻게 얻을 수 있습니까? 예를 들어 RSI가 0에서 50으로 바뀌었다면 몇 점과 같을까요?

제로 캔들에서 RSI 지표의 마지막 값을 포착합니다. 우리는 다음 틱을 기다리고 있습니다. 틱이 도착했습니다. 가격이 정확히 1핍이 되도록 하십시오. RSI가 어떻게 변했는지 봅시다. 글쎄, 그게 다야 - 계수는 우리 주머니에 있습니다.
 
drknn :

제로 캔들에서 RSI 지표의 마지막 값을 포착합니다. 우리는 다음 틱을 기다리고 있습니다. 틱이 도착했습니다. 가격이 정확히 1핍이 되도록 하십시오. RSI가 어떻게 변했는지 봅시다. 글쎄, 그게 다야 - 계수는 우리 주머니에 있습니다.

예를 들어 1포인트의 계수를 잡았고 RSI가 해당 척도에서 50포인트를 통과했으며 50포인트를 통과했지만 실제로는 플랫이 있었습니다. 그리고 2포인트 캔들. 움직임의 힘도 있다. 이 경우 결정하기 때문에
 
cyclik33 :

친애하는 아나톨리. 이 코드에 대해 대단히 감사합니다. 또 다른 질문은 항상 작동하게 하는 방법이지만 바에서 1개의 거래만 할 수 있습니까?

보리스, 더 쉽습니다. 다음 줄을 삭제합니다.

 datetime new ;

코드의 맨 위에 있습니다(어떤 기능에도 포함되지 않고 분리되도록).
그런 다음 OrderSend (...) 함수에 대한 호출이 있는 위치에서 if 문을 추가로 포함하기만 하면 됩니다.

 if ( new != Time[ 0 ]){
   new = Time[ 0 ];
   // здесь функция OrderSend(...);
}

이제 다음 거래를 열기 전에 현재 막대에 거래가 있는지 여부를 확인합니다. 그렇다면 현재 막대가 새 변수에 저장되고 현재 막대가 저장된 것과 일치하면 거래가 열리지 않습니다. 따라서 막대가 새 것인 경우 시작 시간이 새 변수의 데이터와 일치하지 않고 거래가 열리고 변수는 새 값을 받습니다.

Expert Advisor의 아키텍처를 정확히 알지 못하지만 대부분의 경우 이 방법을 사용하면 됩니다.

 
FoxUA :

주문 후, 주문 기준이 된 변수는 다시 "0" 값을 받아야 하며,


코드를 컴파일하려고 했으나 오류가 발생했습니다.
두 가지 방법( start ()NewOrder1() )에서 주문하기 위한 기준 역할을 하는 변수를 사용하고 모든 함수 외부에서 선언해야 합니다.

 bool b,s, //соответственно бай или селл  
bs, // если закрытие по стоплоссу ордера бай
ss, // если закрытие по стоплоссу ордера sell
bt,
st; //      то же по ТП
double bl,sl; // лоты соответсвенно для бай и селл
for 루프에서 더 나아가
 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

그들에게 필요한 값을 할당하고 NewOrder1() 함수에서 주문을 성공적으로 연 후 그곳에서도 재설정해야 합니다.

 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 ());
} else {
b=0;
s=0; 
bs=0;
ss=0;
bt=0;
st=0;
bl=0;
sl=0;
}
//-----------
return ( 0 );}

그 라인을 따라 뭔가.

 
Infinity :

누가 알아. 통과된 통화 틱의 비율과 함께 RSI와 같은 지표의 이동 비율(자체 규모)을 어떻게 얻을 수 있습니까? 예를 들어 RSI가 0에서 50으로 바뀌면 몇 점과 같을지 설명하겠습니다.

나는 비슷한 목표와 같은 것을 스스로에게 물었고 그러한 "라인"을 썼습니다. 아마도 당신에게 적합 할 것입니다.

 //+------------------------------------------------------------------+
int get_pips_RSI_path( int home_shift, int end_shift){
   double home_index, end_index;
   double home_price, end_price;
   int path;
   
   home_index = iRSI ( NULL , 0 , 14 , PRICE_CLOSE ,home_shift);
   home_price = Close[home_shift];
   end_index = iRSI ( NULL , 0 , 14 , PRICE_CLOSE ,end_shift);
   end_price = Close[end_shift];
   
   if (end_price > home_price)path = (end_price - home_price)/ Point ; else path = (home_price - end_price)/ Point ;
   
   Alert ( "Между значениями RSI " , home_index, " и " , end_index, " было пройденно " , path, " пунктов." );
   return (path);
}
//+------------------------------------------------------------------+

매개변수로 필요한 RSI 값이 있는 막대의 이동을 전달하고 응답으로 막대 사이의 거리를 포인트 단위로 얻습니다.

 
ToLik_SRGV :

나는 비슷한 목표와 같은 것을 스스로에게 물었고 그러한 "라인"을 썼습니다. 아마도 당신에게 적합 할 것입니다.

매개변수로 필요한 RSI 값이 있는 막대의 이동을 전달하고 응답으로 막대 사이의 거리를 포인트 단위로 얻습니다.


감사합니다 오늘밤에 확인하겠습니다

전문가의 히스토리에 대한 테스트는 따옴표의 불완전한 히스토리로 인해 좋은 결과를 내지 못할 것이라는 강한 느낌이 있습니다. 내가 이해하는 한, 시세의 역사는 현재 시장(촛대 시세)을 보관함으로써 형성되지만, 실제 시세(적어도 나에게 일어난 일)가 지나가면 그 결과에 의존하는 방법, 얼마 동안은 단순히 40분 동안 촛불이 없으면 차트가 멈추고 촛불이 꺼집니다.

 
ToLik_SRGV :

수익성 있는 매개변수 조합을 찾지 못했을 수도 있습니다. "쓸모 없는 결과 건너뛰기" 확인란의 선택을 취소해 보십시오.

그리고 최적화하려는 매개변수 옆에 있는 EA 설정을 선택했는지 확인하고 단계 및 최적화 한계를 설정했는지 확인하는 것을 잊지 마십시오.

감사합니다. "쓸모없는 결과 건너뛰기" 체크 표시가 있었습니다.
 
artmedia70 :


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

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

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


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

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



내가 알기로는 지표선이 추세선을 교차할 때 거래 신호가 발생해야 하며 그 반대의 경우는 아닙니다. 추세선 위치의 이전 값을 정적 변수에 저장하고 변경되지 않은 경우 - 교차점 확인, 추세선의 위치가 변경된 경우 - 재설정...