여기에서 다양한 도움이 필요합니다. . 다른 지표 간의 일치를 찾는 코드가 있습니다. 일단 그들이 모두 동의하면 나는 차트 이미지에서 설명한 방식으로 거래가 들어갈 수 있는 방법을 원합니다. 지금까지는 1차 "매수" 거래를 입력할 수 있지만 1거래만 입력하지 않습니다.... 최대 8거래를 입력하고 있습니다. 그런 다음 시장이 나에게 불리한 상황이 닥치더라도 다시 매수/매도하는 "비상 거래"에 들어갑니다. 누군가 올바른 코드가 어떻게 생겼는지 보여줄 수 있다면 대단히 감사하겠습니다.
이 이미지가 표시되는지 확실하지 않지만 첨부 파일로도 가지고 있는 경우를 대비하여.
다음은 거래를 실행해야 하는 결함이 있는 코드입니다...
동안 (execute_trade ==5)
{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...주문이 1개 이루어진 후 중지되지만 아직 작동하지 않습니다.
여기에서 다양한 도움이 필요합니다. 다른 지표 간의 일치를 찾는 코드가 있습니다. 일단 그들이 모두 동의하면 나는 차트 이미지에서 설명한 방식으로 거래가 들어갈 수 있는 방법을 원합니다. 지금까지는 1차 "매수" 거래를 입력할 수 있지만 1거래만 입력하지 않습니다.... 최대 8거래를 입력하고 있습니다. 그런 다음 시장이 나에게 불리한 상황이 닥치더라도 다시 매수/매도하는 "비상 거래"에 들어갑니다. 누군가 올바른 코드가 어떻게 생겼는지 보여줄 수 있다면 대단히 감사하겠습니다.
이 이미지가 표시되는지 확실하지 않지만 첨부 파일로도 가지고 있는 경우를 대비하여.
그림 1
그림 2
다음은 거래를 실행해야 하는 결함이 있는 코드입니다...
동안 (execute_trade ==5)
{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...주문이 1개 이루어진 후 중지되지만 아직 작동하지 않습니다.
예, 3단계를 만들고 싶습니다.
예:
15에 도달하고 10으로 돌아오세요
30에 도달하고 15로 돌아오십시오
45에 도달하고 15로 돌아오세요
또는 손절매 에서 닫습니다.
사진을 찍어서 더 잘 설명드리도록 하겠습니다.
이것은 나에게 새로운 것입니다.
따라서 손실을 입은 거래 마감은 항상 다시 반등할 때까지 기다려야 합니까?
반송이 되지 않는다면?
초기 SL에서 마감할까요?지금까지 덕분에 이미 성공했고 이제 이 손실 방지 기능으로 좋은 결과를 얻기 위해 최적화하려고 합니다.![](https://c.mql5.com/forextsd/smiles/shades_smile.png)
예를 들어 RSI 표시기처럼 선 그리기에 대한 정보를 찾으려고 합니다. 동일한 표시기에서 선으로 표시하려는 두 개의 숫자가 있습니다.
나는 그것이 일종의 배열을 포함할 것이라는 것을 알고 있지만 어떤 그룹의 코드가 이것을 발생시킬지 알아내지 못하고 있습니다.
표시기 버퍼
예를 들어 RSI 표시기처럼 선을 그리는 방법에 대한 정보를 찾으려고 합니다. 동일한 표시기에 선으로 표시하려는 두 개의 숫자가 있습니다. 어떤 코드 그룹이 이런 일이 발생하는지 알아내는 행운을 빕니다.
이 글을 읽어주세요
초보자를 위한 MQL4 언어. 사용자 지정 지표(1부) - MQL4 기사
안녕 여러분,
George Smith의 Forex Made-EZ에 대해 잘 아는 사람이 있는지 모르겠습니다.
나는 현재 그의 작업을 검토하고 있으며 그가 사용하는 오스카 오실레이터에 대한 지표를 코딩한 사람이 있는지 궁금합니다.
공식은
A = 마지막 8개 막대 중 가장 높은 값(이 막대 포함)
let B = 지난 8개 막대 중 가장 낮은 최저점(이 막대 포함)
let C = 현재 막대 종가
let X = 이전 오실레이터 수치(Oscar)
오늘날의 "거친" 오실레이터는 (CB)를 (AB)로 나눈 값에 100을 곱한 것과 같습니다.
다음으로 우리는 다음과 같이 대략적인 숫자를 "평활화"합니다(Y라고 부르자).
최종 오실레이터 수 = ((X 나누기 3) 곱하기 2), 더하기 (Y 나누기 3).
누구든지 이것을 코딩했거나 코딩할 수 있다면 매우 감사할 것입니다.
스티브 안부직접 코딩을 해보았습니다. 아무도 이것이 내가 생각하는 일을 하는지 여부에 대해 논평할 수 있습니까? 값은 내가 수동으로 수치를 계산할 때 수행하는 작업에 합산되지 않는 것 같습니다. 또한 표시기가 배치된 시간부터 시작됩니다. 역사적 가치도 보여주고 싶다.
#속성 표시기_분리_창
#속성 표시기_버퍼 1
#property indicator_color1 빨간색
//---- 버퍼
이중 ExtMapBuffer1[];
//+----------------------------------------------- -------------------+
//| 커스텀 인디케이터 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//---- 표시기
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
string short_name = "오스카 지표";
IndicatorShortName(short_name);
//----
반환(1);
}
//+----------------------------------------------- -------------------+
//| 고객 표시기 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
int counted_bars=IndicatorCounted();
//---- 가능한 오류 확인
if (counted_bars<0) return(-1);
//---- 마지막으로 계산된 막대가 다시 계산됩니다.
if (counted_bars>0) counted_bars--;
int pos=바 개수 계산된 바;
//---- 메인 계산 루프
이중 x;
x=50;
동안(위치>=0)
{
이중 a, b, c, y, osc;
// let A = 마지막 8개 막대 중 가장 높은 값(이 막대 포함)
a=높음;
//let B = 지난 8개 막대 중 가장 낮은 최저점(이 막대 포함)
b=낮음;
//let C = 현재 막대 종가
c = 닫기[pos];
//let X = 이전 오실레이터 수치(Oscar)
//오늘의 "거친" 오실레이터는 (CB)를 (AB)로 나눈 값에 100을 곱한 것과 같습니다.
y=((cb)/(ab))*100;
//다음으로 대략적인 숫자를 "매끄럽게"(Y라고 부르자) 다음과 같이 합니다.
//최종 오실레이터 수 = ((X 나누기 3) 곱하기 2), 더하기 (Y 나누기 3).
osc=((x/3)*2)+(y/3);
ExtMapBuffer1[pos]= osc ;
포스--;
}
반환(0);
}
어떤 도움도 감사히 받았습니다.
고마워 스티브
물어보세요... Mode_trades
안녕하세요, 누구든지 MODE_TRADES 사용에 대한 예를 줄 수 있습니까?
감사해요.
smb1970으로 - 이것은 다음과 같습니다.
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_maximum 100
#property indicator_minimum 0
//
//
//
//
//
extern int OscPeriod = 8;
extern int OscPrice = PRICE_CLOSE;
double oscBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
int init()
{
SetIndexBuffer(0,oscBuffer);
IndicatorShortName("Osc ("+OscPeriod+")");
return(0);
}
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//
//
//
//
//
for(i=limit; i>=0; i--)
{
double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);
double high = High[ArrayMaximum(High,OscPeriod,i)];
double low = Low[ArrayMinimum(Low,OscPeriod,i)];
//
//
//
//
//
if (high!=low)
double raw = 100.00*(price-low)/(high-low);
else raw = 0.00;
oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;
}
return(0);
}그러나 그림을 보세요. 위쪽은 "Oscar" 아래쪽은 stochastic(8)의 Ema(5)입니다. 더 간단하게 하자면 아래쪽은 신호선이 설정된 Stochastic(8,5,1)입니다. 지수로. 따라서 "Oscar"는 단순히 확률론적 신호선입니다.
감사해요!
mladen에게 감사합니다. 매우 유용할 뿐만 아니라 매우 유용합니다!
코딩에 도움이 필요한 NewB :-(
안녕 모두,
여기에서 다양한 도움이 필요합니다.
. 다른 지표 간의 일치를 찾는 코드가 있습니다. 일단 그들이 모두 동의하면 나는 차트 이미지에서 설명한 방식으로 거래가 들어갈 수 있는 방법을 원합니다. 지금까지는 1차 "매수" 거래를 입력할 수 있지만 1거래만 입력하지 않습니다.... 최대 8거래를 입력하고 있습니다. 그런 다음 시장이 나에게 불리한 상황이 닥치더라도 다시 매수/매도하는 "비상 거래"에 들어갑니다. 누군가 올바른 코드가 어떻게 생겼는지 보여줄 수 있다면 대단히 감사하겠습니다.![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
이 이미지가 표시되는지 확실하지 않지만 첨부 파일로도 가지고 있는 경우를 대비하여.
다음은 거래를 실행해야 하는 결함이 있는 코드입니다...
동안 (execute_trade ==5)
{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...주문이 1개 이루어진 후 중지되지만 아직 작동하지 않습니다.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
실행_무역=0;
if(주문선택(티켓, SELECT_BY_TICKET, MODE_TRADES))
Print("내 티켓은: " , 티켓);
{
구매1 = OrderOpenPrice(); //첫 번째 주문의 가격을 가져와서 이 변수에 넣습니다.
// Comment("주문 번호 1 시가는 ", OrderOpenPrice () + " " + buy1 + " 보다 작음 " + (buy1-0.0030));
if (구매1 >= (구매1-0.0030))
{
//if ( OrdersTotal() <= buy_trade1 ) // 1개의 주문이 이루어진 후 중지합니다.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
//execute_trade=0;
}
} 또 다른
Print("OrderSelect는 ", GetLastError() 오류를 반환했습니다.);
}
코딩에 도움이 필요한 NewB
안녕 모두,
여기에서 다양한 도움이 필요합니다. 다른 지표 간의 일치를 찾는 코드가 있습니다. 일단 그들이 모두 동의하면 나는 차트 이미지에서 설명한 방식으로 거래가 들어갈 수 있는 방법을 원합니다. 지금까지는 1차 "매수" 거래를 입력할 수 있지만 1거래만 입력하지 않습니다.... 최대 8거래를 입력하고 있습니다. 그런 다음 시장이 나에게 불리한 상황이 닥치더라도 다시 매수/매도하는 "비상 거래"에 들어갑니다. 누군가 올바른 코드가 어떻게 생겼는지 보여줄 수 있다면 대단히 감사하겠습니다.
이 이미지가 표시되는지 확실하지 않지만 첨부 파일로도 가지고 있는 경우를 대비하여.
그림 1
그림 2
다음은 거래를 실행해야 하는 결함이 있는 코드입니다...
동안 (execute_trade ==5)
{if ( OrdersTotal() == buy_trade1 ) //buy_trade1 = 1...주문이 1개 이루어진 후 중지되지만 아직 작동하지 않습니다.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);
실행_무역=0;
if(주문 선택(티켓, SELECT_BY_TICKET, MODE_TRADES))
Print("내 티켓은: " , 티켓);
{
구매1 = OrderOpenPrice(); //첫 번째 주문의 가격을 가져와 이 변수에 넣습니다.
// Comment("주문 번호 1 시가는 ", OrderOpenPrice () + " " + buy1 + " 보다 작음 " + (buy1-0.0030));
if (구매1 >= (구매1-0.0030))
{
//if ( OrdersTotal() <= buy_trade1 ) // 1개의 주문이 이루어진 후 중지합니다.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);
//execute_trade=0;
}
}
또 다른
Print("OrderSelect는 ", GetLastError() 오류를 반환했습니다.);
}