모두에게 인사드립니다. 문제가 있습니다. 표시기를 "잃어버렸습니다." 이것은 일종의 평활 CCI로, 마침표와 일종의 승수라는 두 가지 매개변수를 변경할 수 있었습니다. 원래 버전에서 이러한 매개변수는 각각 20과 2와 같습니다. 그리고 내가 모든 것을 올바르게 기억한다면이 표시기의 이름은 두 단어로 구성되고 두 번째 단어는 영어 문자 "C"로 시작됩니다. 갑자기 누가 알겠습니까, 도와주세요!
그러나 일반적으로 생성자를 오버로드하여 Init() 대신 사용할 수 있지만 결국 동일한 기능입니다. 어떤 선택을 할 것인지는 취향에 관한 모든 사람의 개인적인 문제입니다. 아시다시피 고문은 없습니다)
그리고 초기화에 실패했다면 Init()와 같은 메소드를 사용하는 경우 해당 타입의 값을 반환하는 것으로 설명하고 오류가 발생하면 해당 값을 반환할 수 있습니다. 따라서 호출 코드는 실패한 초기화를 인식하므로 개체를 사용할 수 없습니다. 생성자가 사용되는 경우 호출 코드는 실패한 초기화에 대해 어떻게 알 수 있습니까?
여러분, 올빼미가 신호에서 이전에 열린 위치와 동일한 막대에서 주문을 열지 않도록 하는 방법을 있지만 새 막대를 기다렸다가 신호를 다시 확인하는 방법은 다음과 같습니다.
이것을 추가했습니다 -
그리고 -
이 같은:
//---if (iBarShift(OrderSymbol(), Period (),OrderOpenTime())== 0 ) {
// выбранный ордер открыт на нулевом (текущем) баре, значит ещё рано открывать следующий
}
else {
// выбранный ордер открыт не на нулевом (текущем) баре, значит можно открывать следующий
}
//+------------------------------------------------------------------+int BarOpenLastPos( string sy, int timeframe, int op, int mn) {
datetime t= 0 ;
int i, j=- 1 , k= OrdersTotal ()- 1 ;
for (i=k; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue ;
if (OrderType()!=op) continue ;
if (OrderMagicNumber()!=mn) continue ;
if (t<OrderOpenTime()) {
t=OrderOpenTime();
j=i;
}
}
}
if ( OrderSelect (j, SELECT_BY_POS)) return (iBarShift(sy,timeframe,OrderOpenTime()));
return (- 1 );
}
//+------------------------------------------------------------------+
함수가 -1을 반환하면 데이터가 함수에 전달되는 열린 위치가 없는 것입니다.
사용 예:
if (BarOpenLastPos( Symbol (), Period (), OP_BUY, magic)> 0 ) {
// бар открытия последней открытой позиции Buy на текущем символе, текущем таймфрейме, // с магиком magic больше нулевого --> можно открывать следующую позицию
}
또는
if (BarOpenLastPos(USDCAD, PERIOD_M15 , OP_SELL, magic0)< 0 ) {
// нет позиций Sell на USDCAD с магиком magic0 --> можно открывать позицию на USDCAD
}
MA 지표가 있습니다. 그리고 비슷한 HMA가 있습니다. Expert Advisor에 어떻게 삽입할 수 있습니까? 코드를 완전히 복사하시겠습니까? 아니면 더 짧은 버전이 있습니까?
iCustom 배우기
아이디어는 좋은데 거래를 다른 단말기로 옮기거나 복사하는 그런 프로그램은 여기에서 본 적이 없습니다 브로커의 서비스 없이 작동할 수 있습니까?
그런 ?
MA 표시기가 있습니다. 그리고 비슷한 HMA가 있습니다. Expert Advisor에 어떻게 삽입할 수 있습니까? 코드를 완전히 복사하시겠습니까? 아니면 더 짧은 버전이 있습니까?
모두에게 인사드립니다. 문제가 있습니다. 표시기를 "잃어버렸습니다." 이것은 일종의 평활 CCI로, 마침표와 일종의 승수라는 두 가지 매개변수를 변경할 수 있었습니다. 원래 버전에서 이러한 매개변수는 각각 20과 2와 같습니다. 그리고 내가 모든 것을 올바르게 기억한다면이 표시기의 이름은 두 단어로 구성되고 두 번째 단어는 영어 문자 "C"로 시작됩니다. 갑자기 누가 알겠습니까, 도와주세요!
그러나 일반적으로 생성자를 오버로드하여 Init() 대신 사용할 수 있지만 결국 동일한 기능입니다. 어떤 선택을 할 것인지는 취향에 관한 모든 사람의 개인적인 문제입니다. 아시다시피 고문은 없습니다)
그리고 초기화에 실패했다면 Init()와 같은 메소드를 사용하는 경우 해당 타입의 값을 반환하는 것으로 설명하고 오류가 발생하면 해당 값을 반환할 수 있습니다. 따라서 호출 코드는 실패한 초기화를 인식하므로 개체를 사용할 수 없습니다. 생성자가 사용되는 경우 호출 코드는 실패한 초기화에 대해 어떻게 알 수 있습니까?
여러분, 올빼미가 신호에서 이전에 열린 위치와 동일한 막대에서 주문을 열지 않도록 하는 방법을 있지만 새 막대 를 기다렸다가 신호를 다시 확인하는 방법은 다음과 같습니다.
이것을 추가했습니다 -
그리고 -여러분, 올빼미가 신호에서 이전에 열린 위치와 동일한 막대에서 주문을 열지 않도록 하는 방법을 있지만 새 막대를 기다렸다가 신호를 다시 확인하는 방법은 다음과 같습니다.
이것을 추가했습니다 -
그리고 -이 같은:
이 같은:
감사합니다. 예를 들어 규정된 줄을 해독하기가 더 어려워지지 않을까요?--//선택한 주문이 0(현재) 막대에서 열려 있습니다. 다음을 열기에는 너무 이르다는 의미입니다.
// 선택한 주문 은 0(현재) 막대에서 열리지 않으므로 다음 주문을 열 수 있습니다...???
감사합니다. 예를 들어 규정된 줄을 해독하기가 어렵지 않습니까?--//선택한 주문이 0(현재) 막대에서 열려 있습니다. 다음 주문을 열기에는 너무 이르다는 의미입니다.
// 선택한 주문은 0(현재) 막대에서 열리지 않으므로 다음 주문을 열 수 있습니다...???
다음은 마지막 열린 위치의 열린 막대를 반환하는 함수입니다.
함수가 -1을 반환하면 데이터가 함수에 전달되는 열린 위치가 없는 것입니다.
사용 예:
또는
전문가들은 당신의 도움을 요청합니다 ...
test01 알고리즘
//+------------------------------------------------------------------+ //test //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 clrGold #property indicator_color2 clrBlue #property indicator_level1 0 //--- indicator buffers double Buf0[]; double Buf1[]; double t1[]; double t2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4); SetIndexBuffer(0,Buf0); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(1,Buf1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(2,t1); SetIndexBuffer(3,t2); //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,counted_bars; counted_bars=IndicatorCounted(); i=Bars-counted_bars-1; int sr=24,n; double sum,sum2; double m1,m2; while(i>=0) { sum=0; sum2=0; for(n=i; n<=i+sr-1; n++) { if(Open[i]>Open[i+1]) m1=sum=sum+Close[i]-Close[n]; if(Open[i]<Open[i+1]) m2=sum=sum+Close[i]-Close[n]; if(Open[i]>Open[i+1]) t1[i]=sum2=sum2+Close[i]-Close[n]; if(Open[i]<Open[i+1]) t2[i]=sum2=sum2+Close[i]-Close[n]; } Buf0[i]=(m1+m2)/sr; Buf1[i]=(t1[i]+t2[i])/sr; i--; } return(0); } //+------------------------------------------------------------------+
Buf1과 Buf0의 값이 다른 이유는 무엇입니까? 논리적으로 그들은 같아야합니까?
변수를 통해 일부 값이 있고 버퍼(데이터 배열)를 통해 다른 값이 있는 이유는 무엇입니까? (배열은 추가 계산에 필요함)? 배열과 변수 m1 및 m2를 통해 수행하는 방법