//+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- 2개의 추가 버퍼가 계산에 사용됩니다. 표시 버퍼(3); //---- 그리기 설정 SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexDrawBegin(0,SignalSMA); IndicatorDigits(숫자+2); //---- 3개의 인디케이터 버퍼 매핑 SetIndexBuffer(0,OsmaBuffer); SetIndexBuffer(1, MacdBuffer); SetIndexBuffer(2, 신호 버퍼); //---- DataWindow의 이름 및 표시기 하위 창 레이블 IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")"); //---- 초기화 완료 리턴(0); } //+----------------------------------------------- --------------------+ //| 오실레이터의 이동 평균 | //+----------------------------------------------- --------------------+ 정수 시작() { 정수 제한; int counted_bars=IndicatorCounted(); //---- 마지막으로 계산된 막대가 다시 계산됩니다. if(counted_bars>0) counted_bars--; 제한=막대 개수 계산된 막대기; //---- 첫 번째 추가 버퍼에서 계산된 macd for(int i=0; i<limit; i++) MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); //---- 두 번째 추가 버퍼에서 카운트된 신호 라인 for(i=0; i<한계; i++) SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i); //---- 메인 루프 for(i=0; i<한계; i++) OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i]; //---- 완료
가능하면 코드 형태로, 그렇지 않으면 내 머리를 부러 뜨 렸습니다 :)
무엇이 문제가 될 수 있습니까? 테스트 도중 인디케이터가 몇 개만 보여도 어드바이저는 인디케이터의 문제점이 무엇일지 막막했다.
어떤 변수가 OsMA 값을 저장합니까?
//+----------------------------------------------- --------------------+
//| 오스마.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+----------------------------------------------- --------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net/"
//---- 표시기 설정
#속성 표시기_분리_창
#속성 표시기_버퍼 1
#property indicator_color1 실버
#속성 표시기_너비1 2
//---- 표시기 매개변수
extern int FastEMA=12;
extern int SlowEMA=26;
외부 정수 SignalSMA=9;
//---- 표시기 버퍼
더블오즈마버퍼[];
이중 MacdBuffer[];
이중 신호 버퍼[];
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//---- 2개의 추가 버퍼가 계산에 사용됩니다.
표시 버퍼(3);
//---- 그리기 설정
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(숫자+2);
//---- 3개의 인디케이터 버퍼 매핑
SetIndexBuffer(0,OsmaBuffer);
SetIndexBuffer(1, MacdBuffer);
SetIndexBuffer(2, 신호 버퍼);
//---- DataWindow의 이름 및 표시기 하위 창 레이블
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- 초기화 완료
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 오실레이터의 이동 평균 |
//+----------------------------------------------- --------------------+
정수 시작()
{
정수 제한;
int counted_bars=IndicatorCounted();
//---- 마지막으로 계산된 막대가 다시 계산됩니다.
if(counted_bars>0) counted_bars--;
제한=막대 개수 계산된 막대기;
//---- 첫 번째 추가 버퍼에서 계산된 macd
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- 두 번째 추가 버퍼에서 카운트된 신호 라인
for(i=0; i<한계; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- 메인 루프
for(i=0; i<한계; i++)
OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- 완료
리턴(0);
}
//+----------------------------------------------- --------------------+
이 옵션이 적합합니다.
정말 감사합니다! 사실, 저는 함수를 다루지 않았습니다. 이제 함수를 호출하고 변수 값을 전달하고 값을 다시 가져오는 방법을 알아내야 합니다. 내가 행동의 메커니즘을 올바르게 이해한다면.
어떤 변수가 OsMA 값을 저장합니까?
하지만 버퍼에 있지 않습니까?
하지만 버퍼에 있지 않습니까?
뭐라고요?
뭐라고요?
오스마버퍼[]
뭐라고요?
дабавте перед
Alert("Значения MacdBuffer[i]="MacdBuffer[i]);
Alert("Значения SignalBuffer[i]="SignalBuffer[i]);
Alert("Значения OSMA ="OsmaBuffer[i]);
return(0);
}
값을 정규화하기만 하면 됩니다.
안녕하세요.
매수 포지션 정지가 이월되지 않는 이유는 무엇입니까? 세포의 경우 모든 것이 작동합니다.
if(OrdersTotal()>0)
{
if(Bid==bubuy||Bid==busell)
{
OrderSelect (티켓, SELECT_BY_TICKET, MODE_TRADES);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(), 0, 파란색);
}
반환(0);
}
무엇이 문제가 될 수 있습니까? 테스트 도중 인디케이터가 몇 개만 보여도 어드바이저는 인디케이터의 문제점이 무엇일지 막막했다.
EA의 매개변수(숫자 또는 유형별)가 잘못 설정되었습니다.
또는 표시기에서 모든 문자열 매개변수를 제거합니다.