이중 ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERAGE_TF,"AllAverages_v2.3",ALL_AVERAGE_PERIOD,ALL_AVERAGE_SHIFT,ALL_AVERAGE_METHOD,ALL_AVERAGE_PRICE,ALL_AVERA_COLOR,0);
mladen: 코드의 오류가 아닙니다. 도구 -> 기록 센터로 이동하여 테스트하려는 기호에서 1분 데이터를 선택하여 다운로드합니다(90% 정확도에 필요한 것은 1분 데이터, 나머지는 다운로드할 필요 없음).
그래서 EA 빌더를 생성하는 템플릿 중 하나로 기본 EA를 작성하기 시작했습니다. EA 템플릿의 전제를 내려놓은 것 같지만 EA가 최대 한 번의 거래만 입력하도록 하는 방법이 필요합니다. 바로 지금 그것은 거래를 계속 생성하고 무승부를 우스꽝스럽게 만듭니다. 다음은 거래 로트 코드입니다.
Styex: 그래서 EA 빌더를 생성하는 템플릿 중 하나로 기본 EA를 작성하기 시작했습니다. EA 템플릿의 전제가 무너진 것 같지만 EA가 최대 한 번의 거래만 입력하도록 하는 방법이 필요합니다. 바로 지금 그것은 거래를 계속 생성하고 무승부를 우스꽝스럽게 만듭니다. 누구든지 도움을 주시면 대단히 감사하겠습니다.
...
코드의 오류가 아닙니다
도구 -> 기록 센터로 이동하여 테스트하려는 기호에서 1분 데이터를 선택하여 다운로드합니다(90% 정확도에 필요한 모든 것은 1분 데이터이며 나머지는 다운로드할 필요 없음).
안녕하세요 코더
저는 여전히 MQL-Code의 첫 단계를 배우고 있습니다.
저널에 다음 메시지가 표시되는 이유는 무엇입니까?
테스트 생성기:
일치하지 않는 데이터 오류(2009.05.06에서 볼륨 제한 159 19 15 초과)
코드에서 어디를 봐야 합니까?
감사해요내 친구와 나는 EA에서 일하고 있습니다. 어떤 단계에서 EA는 특정 시간(예: 17:00 EST... 등)의 가격을 읽고 검색해야 합니다.
시니어가 가격 막대를 거꾸로 계산하는 대신 그렇게 하는 방법을 조언해 주시겠습니까? 아마도 이미 작성된 함수가 있을 것입니다. 친절하게 도와주세요. 모두 감사합니다 & 신의 축복!
B rgds/풍부한iBarShift(..)는 차트 의 막대 수 를 찾은 다음 닫기 또는 열기를 사용하는 데 도움이 됩니다.
iBarShift(..)는 차트의 막대 수를 찾은 다음 닫기 또는 열기를 사용하는 데 도움이 됩니다.
감사합니다 로저. 도움이 되었습니다. 그리고 명확하게 하지 못해 죄송합니다. Bid & Ask 가격이 모두 필요합니다. 어떻게 얻나요? 어리석은 질문이라면 실례합니다.
B rgds/풍부한
데이터 오류
안녕 mladen
빠른 응답에 감사드립니다.
다른 EA로 테스트하면 잘 작동하기 때문에 tickdata의 문제가 아니라고 생각합니다.
Custom-Indicator에 문제가 있는 것 같습니다.
나는 다음 indi를 내장할 것이다: AllAverages_v2.3
더블 ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERAGE_TF,"AllAverages_v2.3",ALL_AVERAGE_PERIOD,ALL_AVERAGE_SHIFT,ALL_AVERAGES_METHOD,ALL_AVERAGE_PRICE,0);
이제 다음 메시지가 있습니다: iCustom 함수의 잘못된 인덱스 버퍼 번호
이 iCustom을 올바르게 정의하는 방법은 무엇입니까?
안녕하세요 mladen 문제를 찾았습니다
하나의 매개변수를 잊어버렸습니다: 색상
올바른 정의:
이중 ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERAGE_TF,"AllAverages_v2.3",ALL_AVERAGE_PERIOD,ALL_AVERAGE_SHIFT,ALL_AVERAGE_METHOD,ALL_AVERAGE_PRICE,ALL_AVERA_COLOR,0);
코드의 오류가 아닙니다. 도구 -> 기록 센터로 이동하여 테스트하려는 기호에서 1분 데이터를 선택하여 다운로드합니다(90% 정확도에 필요한 것은 1분 데이터, 나머지는 다운로드할 필요 없음).
감사합니다 로저. 도움이 되었습니다. 그리고 명확하게 하지 못해 죄송합니다. Bid & Ask 가격이 모두 필요합니다. 어떻게 얻나요? 어리석은 질문이라면 실례합니다. B rgds/풍부한
차트의 모든 가격은 입찰가입니다. Ask=입찰가+시장정보(Symbol(),MODE_SPREAD)*포인트;
거래 제한
그래서 EA 빌더를 생성하는 템플릿 중 하나로 기본 EA를 작성하기 시작했습니다. EA 템플릿의 전제를 내려놓은 것 같지만 EA가 최대 한 번의 거래만 입력하도록 하는 방법이 필요합니다. 바로 지금 그것은 거래를 계속 생성하고 무승부를 우스꽝스럽게 만듭니다. 다음은 거래 로트 코드입니다.
//위치 확인
bool IsTrade = 거짓;
for (int i = 0, i < 총계, i ++) {
주문 선택(i, SELECT_BY_POS, MODE_TRADES);
if(주문 유형() <= OP_SELL && 주문 기호() == 기호()) {
IsTrade = 사실;
if(주문 유형() == OP_BUY) {
//닫다
//+----------------------------------------------- -------------------+
//| 시그널 비긴(Exit Buy) |
//+----------------------------------------------- -------------------+
if (CloseBuy1_1 >= CloseBuy1_2) 주문 = SIGNAL_CLOSEBUY;
//+----------------------------------------------- -------------------+
//| 시그널 종료(Exit Buy) |
//+----------------------------------------------- -------------------+
if (주문 == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = 막대;
IsTrade = 거짓;
계속하다;
}
//후행 정지
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > 포인트 * TrailingStop) {
if(OrderStopLoss() < 입찰 - 포인트 * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), 입찰 - 포인트 * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = 막대;
계속하다;
}
}
}
} 또 다른 {
//닫다
누구든지 도움을 주시면 대단히 감사하겠습니다.
그래서 EA 빌더를 생성하는 템플릿 중 하나로 기본 EA를 작성하기 시작했습니다. EA 템플릿의 전제가 무너진 것 같지만 EA가 최대 한 번의 거래만 입력하도록 하는 방법이 필요합니다. 바로 지금 그것은 거래를 계속 생성하고 무승부를 우스꽝스럽게 만듭니다. 누구든지 도움을 주시면 대단히 감사하겠습니다.
{
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
}감사합니다
이 EA를 찾았지만 일부는 이해가 되지 않습니다.
부울 get_signal()
{
부울 enable_trade = 거짓;
int trend_up = 0;
int trend_down = 0;
정수 나;
ArrayInitialize( TradeSign, false );
if( 막대 >= 100 ){
for( i = 0 ; i < DEF_MA_NUM ; i++ ){
Buf_MA[0][ i ] = calc_SMA(PERIOD_M30, MA_prm_1, i );
Buf_MA[1][ i ] = calc_SMA(PERIOD_M30, MA_prm_2, i );
Buf_MA[2][ i ] = calc_SMA(PERIOD_M30, MA_prm_3, i );
Buf_MA[3][ i ] = calc_SMA(PERIOD_M30, MA_prm_4, i );
Buf_MA[4][ i ] = calc_SMA(PERIOD_M30, MA_prm_5, i );
}
이중 vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 );
이중 vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );
for( 나는 = 0 ; 나는 < DEF_MA_TYP ; 나는 ++ ){
if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){
Trend_up++;
}
}
if((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){
TradeSign[SIG_Buy] = true;
enable_trade = 사실;
}
for( 나는 = 0 ; 나는 < DEF_MA_TYP ; 나는 ++ ){
if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){
Trend_down++;
}
}
if((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){
TradeSign[SIG_Sell] = true;
enable_trade = 사실;
}
}
반환(enable_trade);
}
이중 calc_SMA( int timeframe, int period, int offset )
{
이중 vMA = 0;
이중 합=0;
정수 나;
for( i = 0 ; i < 기간 ; i++ ){
합계 += iClose ( Symbol(), 시간 프레임, i + 오프셋 );
}
vMA = 합계 / 기간;
리턴(vMA);
}
"trendup>3"인 부분이 있습니다. 이것은 배열에서 계산됩니까? 배열은 어떻게 작동하므로 "trendup>3"을 줄 수 있습니까? 이것은 한 줄에서 평균을 알기 위한 것입니까? 나는 그것이 어떻게 작동하는지 이해하지 못합니다.목표 이익에 도달했을 때 전문가를 재설정하는 방법은 무엇입니까? martingale 전략을 사용하고 있지만 순서대로 많이 열리지 않습니다 ...
예: 로트 0.1, 0.2, 0.4, 0.8, 1.6
오픈 로트: 0.1, 0.2, 0.4 -> 로트 0.4에서 이익을 취하지 만 다음 로트는 0.8 , 0.1, 0.2, 0.4...
누구든지 도울 수 있습니다 ...???
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)
{ T++;
if(OrderType()==OP_BUY) s=1;
if(OrderType()==OP_SELL) s=2;
Last=OrderOpenPrice();
}}
if (Lots<0.1) Lots=0.1;
for (int j=0;j<T;j++)
{
Lots=LotsUP[j];
}높음/낮음(기준 포함)
저는 양초가 진정한 고점 또는 저점이라고 말하기 전에 특정 항목을 찾는 지표를 코딩하려고 합니다. 이것은 기본적으로 기준입니다(설명을 돕기 위해 차트를 첨부했습니다).
1. 이전의 20개 종가보다 낮은 종가를 찾은 다음(두 번째 화살표가 이 지점) (2) 12바 후 종가가 이전의 12개 종가보다 높아야 합니다(세 번째 화살표). 이 상승 추세는 (3) 이전의 7 종가보다 낮은 종가가 있을 때까지 계속될 것입니다(네 번째 화살표).
나는 많은 성공 없이 iLowest 기능을 사용하려고 노력해 왔습니다. 최선의 방법은 배열을 사용하는 것이라고 생각하지만 배열에 대한 지식은 제한적입니다.
ArrayMinimum 및 ArrayMaximum을 사용 하는 방법에 대한 아이디어나 예가 있습니까? 또는 iLowest 및 iHighest가 작동하도록 하는 방법이 있다면?