나 자신도 프로그래밍하지만 mq4에서는 상황이 좋지 않습니다. 설명하는 방법을 모르거나 제대로 작동하지 않는 작업이 있습니다.
간단한 스캘핑 전략(M15-M30)과 처음에 작성된 로봇이 있습니다. 그는 마음에 가져와야합니다.
전략(내 것이 아니라 광고로 간주되지 않도록 사이트에 대한 링크를 제공하지 않음):
RVI 50
EMA 9
EMA 100
롱 포지션 진입 조건:
EMA9는 아래에서 위로 EMA100을 교차하는 반면 RVI 표시기는 아래에서 위로 0선을 교차하거나 0선 위에 있어야 합니다. 이러한 조건이 충족되면 매수 포지션을 엽니다. 손절매 는 가장 가까운 저점보다 2-3포인트 아래에 배치됩니다. 이익실현 은 손절매보다 1.5~2배 높습니다.
숏 포지션 진입 조건:
EMA9는 위에서 아래로 EMA100을 교차하는 반면 RVI 표시기는 위에서 아래로 0선을 교차하거나 0선 아래에 있어야 합니다. 이러한 조건이 충족되면 우리는 매도 포지션을 엽니다. 손절매 는 가장 가까운 최대값 바로 위에 위치합니다. 이익실현 은 손절매보다 1.5~2배 높습니다.
원시 로봇을 작성했지만 병합됩니다. 작동하지 않는 것을 끝내는 것이 필요하며, 아마도 누군가가 잘못된 신호를 필터링하는 방법에 대한 힌트를 가지고 있습니까? (물론 그들은) ...
작동하지 않고 추가해야 하는 것:
1. 손절매와 이익실현은 각각 100과 200으로 고정되어 있습니다. 이 수준으로는 충분하지 않습니다. 마지막 X 막대에 대한 양초 세트에서 최소 / 최대 정지 손실 계산 을 계산해야합니다 ( X 막대의 수는 입력 매개 변수로 설정됨), 그것에서 테이크를 계산, 나는 어떻게 직접 구현합니다. 가장 중요한 점 , 왜냐하면 신호가 정확하고 이익이 더 많이 갔을지라도 로봇은 정류장의 폐쇄로 인해 정확하게 병합됩니다.
2. 어떤 이유로 로봇은 (이 포럼에서 빌림) 한 막대에서 주문을 여는 것을 확인하지만 작동하지 않습니다. 수표를 수정하고 작동하지 않는 이유를 파악 하십시오.
3. BU가 특정 수준(예: 계산된 TP의 1/2)에 도달하면 후행 정지 (로봇의 수신 매개변수)를 추가합니다(예: 0.3에서 매개변수에 BU 계수를 지정할 수도 있습니다. 0.7). 로봇에 별도의 후행이 설명되어 있지만(코드는 이 포럼에서 가져옴) BU는 고려하지 않습니다. 또한 어떤 이유로 테스터에서 작동하지 않는지 원인을 파악해야 합니다.
4. 자금 관리 없음, 추가하고 싶은데 방법을 모르겠습니다. 예를 들어 활성 주문이 있는 경우 한 방향으로 5개 이상의 주문을 여는 것을 금지합니다. 또는 계정 잔액/자금 설정에서 거래를 금지합니다.
datetime current, last= 0 ;
int shift= 1 ;
voidOnTick ()
{
current= iTime (symbol,frame,shift);
//ограничение на торговлю вне начала бараif (last==current) return ;
last=current;
}
세 번째 점에서:
//трейлинг рыночных ордеров, стоплосс держится на расстоянии Distance от самой экстремальной тени из последних History баров int DoTrailOrder( int ePosition, int eMagicNumber, double eDistance, int eHistory, string eSymbol, int eTimeFrame)
{
if (! OrderSelect (ePosition,SELECT_BY_POS,MODE_TRADES)) return ( 1 );
int eType=OrderType();
if (eType!=OP_BUY && eType!=OP_SELL) return ( 0 );
if (OrderMagicNumber()!=eMagicNumber) return ( 0 );
if (OrderSymbol()!=eSymbol) return ( 0 );
//наблюдаем начиная с бара следующим за баром открытияif ( iBarShift (eSymbol,eTimeFrame,OrderOpenTime())== 0 ) return ( 0 );
int eDigits=( int )MarketInfo(eSymbol,MODE_DIGITS);
double ePoint=MarketInfo(eSymbol,MODE_POINT);
double eSpread=MarketInfo(eSymbol, MODE_SPREAD );
double eExtremum;
if (eType==OP_BUY)
{
//стоп устанавливается на расстоянии eDistance от самой низкой тени бара из истории eHistory
eExtremum= iLow (eSymbol,eTimeFrame, iLowest (eSymbol,eTimeFrame, MODE_LOW ,eHistory, 1 ));
//расстояние от минимума до StopLoss должно превысить TrailingLevelif ( NormalizeDouble (eExtremum-OrderStopLoss(),eDigits)<=eDistance*ePoint) return ( 0 );
//расстояние от минимума до цены открытия должно превысить TrailingLevelif ( NormalizeDouble (eExtremum-OrderOpenPrice(),eDigits)<=eDistance*ePoint) return ( 0 );
//новый стоп должен быть не ближе к текущей цене, чем на два спредаif ( NormalizeDouble (MarketInfo(eSymbol,MODE_BID)+eDistance*ePoint-eExtremum,eDigits)<= 2 *eSpread*ePoint) return ( 0 );
if (!OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (eExtremum-eDistance*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(), clrBlue )) return (- 1 );
}
if (eType==OP_SELL)
{
//стоп устанавливается на расстоянии eDistance от самой высокой тени бара из истории eHistory
eExtremum= iHigh (eSymbol,eTimeFrame, iHighest (eSymbol,eTimeFrame, MODE_HIGH ,eHistory, 1 ));
if ( NormalizeDouble (OrderStopLoss()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint && OrderStopLoss()!= 0 ) return ( 0 );
if ( NormalizeDouble (OrderOpenPrice()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint) return ( 0 );
//один спред между Ask и Bid сократилсяif ( NormalizeDouble (eExtremum+eDistance*ePoint-MarketInfo(eSymbol,MODE_ASK),eDigits)<=eSpread*ePoint) return ( 0 );
if (!OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (eExtremum+(eDistance+eSpread)*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(), clrRed )) return (- 1 );
}
return ( 0 );
}
봇 성능 확인 후 정식 주문 가능
라인이 좋네요 :)
몇 가지 변경 사항
정확히 무엇이 바뀌었나요?
안녕 동료들.
주제가 여전히 관련성이 있습니까? 무료로 로봇을 완성할 준비가 된 고객이 있습니까?
.mq4 코딩을 잘하는 조수가 필요합니다.
나 자신도 프로그래밍하지만 mq4에서는 상황이 좋지 않습니다. 설명하는 방법을 모르거나 제대로 작동하지 않는 작업이 있습니다.
간단한 스캘핑 전략(M15-M30)과 처음에 작성된 로봇이 있습니다. 그는 마음에 가져와야합니다.
전략(내 것이 아니라 광고로 간주되지 않도록 사이트에 대한 링크를 제공하지 않음):
RVI 50
EMA 9
EMA 100
롱 포지션 진입 조건:
EMA9는 아래에서 위로 EMA100을 교차하는 반면 RVI 표시기는 아래에서 위로 0선을 교차하거나 0선 위에 있어야 합니다. 이러한 조건이 충족되면 매수 포지션을 엽니다. 손절매 는 가장 가까운 저점보다 2-3포인트 아래에 배치됩니다. 이익실현 은 손절매보다 1.5~2배 높습니다.
숏 포지션 진입 조건:
EMA9는 위에서 아래로 EMA100을 교차하는 반면 RVI 표시기는 위에서 아래로 0선을 교차하거나 0선 아래에 있어야 합니다. 이러한 조건이 충족되면 우리는 매도 포지션을 엽니다. 손절매 는 가장 가까운 최대값 바로 위에 위치합니다. 이익실현 은 손절매보다 1.5~2배 높습니다.
원시 로봇을 작성했지만 병합됩니다. 작동하지 않는 것을 끝내는 것이 필요하며, 아마도 누군가가 잘못된 신호를 필터링하는 방법에 대한 힌트를 가지고 있습니까? (물론 그들은) ...
작동하지 않고 추가해야 하는 것:
1. 손절매와 이익실현은 각각 100과 200으로 고정되어 있습니다. 이 수준으로는 충분하지 않습니다. 마지막 X 막대에 대한 양초 세트에서 최소 / 최대 정지 손실 계산 을 계산해야합니다 ( X 막대의 수는 입력 매개 변수로 설정됨), 그것에서 테이크를 계산, 나는 어떻게 직접 구현합니다. 가장 중요한 점 , 왜냐하면 신호가 정확하고 이익이 더 많이 갔을지라도 로봇은 정류장의 폐쇄로 인해 정확하게 병합됩니다.
2. 어떤 이유로 로봇은 (이 포럼에서 빌림) 한 막대에서 주문을 여는 것을 확인하지만 작동하지 않습니다. 수표를 수정하고 작동하지 않는 이유를 파악 하십시오.
3. BU가 특정 수준(예: 계산된 TP의 1/2)에 도달하면 후행 정지 (로봇의 수신 매개변수)를 추가합니다(예: 0.3에서 매개변수에 BU 계수를 지정할 수도 있습니다. 0.7). 로봇에 별도의 후행이 설명되어 있지만(코드는 이 포럼에서 가져옴) BU는 고려하지 않습니다. 또한 어떤 이유로 테스터에서 작동하지 않는지 원인을 파악해야 합니다.
4. 자금 관리 없음, 추가하고 싶은데 방법을 모르겠습니다. 예를 들어 활성 주문이 있는 경우 한 방향으로 5개 이상의 주문을 여는 것을 금지합니다. 또는 계정 잔액/자금 설정에서 거래를 금지합니다.
5. 마틴게일. 신호 필터링 ... (선택 사항)
사실 모든 것. 로봇의 파일은 개인으로 제공할 준비가 되어 있으니 협조를 원하시는 분들이 계시다면. 또는 포럼에서 프로그래밍, BU 및 자금 관리에 대한 내용을 읽기 위해 다른 주제를 걷어차십시오. 내가 직접 추가하면 1점만 남습니다.
1번 포인트를 알아냈습니다. iLowest / iHighest를 사용하여 막대의 역사에 따라 가격을 계산하는 방법을 찾았습니다)) 역사의 지난 반년 동안 수익성 지표가 약간 증가했습니다) 병합 된 역사 (
포인트 2는 아직 명확하지 않습니다.
나는 후행을 이해하기 시작했습니다. 아마도 내가 스스로 "승리"할 것입니다. 수익성은 여전히 약간 성장해야하기 때문입니다. 큰 테이크가 있는 거래가 있는데, 이 거래는 이익이 있을 수 있지만 가격이 단순히 도달하지 않고 스톱으로 닫힙니다.
두 번째 점에서:
세 번째 점에서:
후행 정지는 기대치를 높일 수 있지만 수익성을 향상시키지는 못합니다. 시끄러운 시장에서는 이익이 부족할 것입니다. 가격이 새로 뒤따른 정지점에 도달하지 않았더라면 이익은 더 높았을 수 있었을 것입니다.
의식적으로 거래를 성사시키는 방향으로 생각하는 것이 좋습니다. 열릴 신호를 찾고 있는데 왜 닫힘을 우연에 맡깁니까?포인트 2와 3에 대한 팁을 주셔서 감사합니다. 나는 테스트 할 것이다.
닫기에 관해서는 반대 신호가 트리거되면 물론 닫을 수 있습니다. 그러면 더 큰 효과를 줄 생각을 해야 합니다.
시끄러운 시장에서 이익이 부족한 부분에 대해서는 글쎄, 나는 이유가 있지만 일정 수준에 도달하면. 부족하지만 큰 손실도 없을 것입니다. 일반적으로 그것에 대해서도 생각해야합니다))
고맙습니다
Dmitry, 후행 - 이 정보는 이미 많은 사람들이 한 번 이상 테스트했습니다. 맨 위에는 후행 코드가 있으며 아마도 가장 좋은 코드일 것입니다. 그러나 그에게도 이러한 단점이 없는 것은 아닙니다.
시도해야 할 모든 것을 시도하십시오.
정확히 무엇이 바뀌었나요?
이미 어딘가에 주어졌습니다. 여기 또 하나가 있습니다.
포인트 2와 3에 대한 팁을 주셔서 감사합니다. 나는 테스트 할 것이다.
닫기에 관해서는 반대 신호가 트리거되면 물론 닫을 수 있습니다. 그러면 더 큰 효과를 줄 생각을 해야 합니다.
시끄러운 시장에서 이익이 부족한 부분에 대해서는 글쎄, 나는 이유가 있지만 일정 수준에 도달하면. 부족하지만 큰 손실도 없을 것입니다. 일반적으로 그것에 대해서도 생각해야합니다))
고맙습니다
시장은 포인트로 움직이지 않습니다. 점 단위 이동을 기반으로 하지 않습니다. 레벨에서 레벨로 이동합니다. 거리는 추세 시간으로 가장 잘 측정됩니다. 틱 단위일 수도 있지만 포인트 단위는 아닙니다.