void start()
{
StopLevel = MarketInfo( Symbol (), MODE_STOPLEVEL);
// Определение направления пересечения мувинговif (Init) InitMetod();
// Трейлинг стоп открытых позицийif (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber);
// Ожидание нового бара на графикеif (timeprev == Time[ 0 ]) return ;
timeprev = Time[ 0 ];
// Открытие ордера по методу Пуриа
CheckForOpen();
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+void CheckForOpen() // Открытие ордера по методу Пуриа
{
double malw,mas1,mas2,macd;
int res;
// Считывание параметров индикаторов
malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 0 );
mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 0 );
mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 0 );
macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 0 );
// Проверяем положение мувмнговif (malw>mas1 && malw>mas2 && OrderSell)
{
OrderBuy= true ;
OrderSell= false ;
Order= true ;
}
if (malw<mas1 && malw<mas2 && OrderBuy)
{
OrderBuy= false ;
OrderSell= true ;
Order= true ;
}
// Открываем ордер Buyif (macd> 0 && OrderBuy && Order)
{
res= OrderSend ( Symbol (),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss* Point ,Ask+TakeProfit* Point , "" ,MagicNumber, 0 ,Blue);
Order= false ;
return ;
}
// Открываем ордер Sell if (macd< 0 && OrderSell && Order)
{
res= OrderSend ( Symbol (),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss* Point ,Bid-TakeProfit* Point , "" ,MagicNumber, 0 ,Red);
Order= false ;
return ;
}
}
//+------------------------------------------------------------------+//| Calculate optimal lot size |//+------------------------------------------------------------------+double Lots() // Расчет объема лота
{
double Lots;
if (Lot > 0 ) return (Lot);
Lots=AccountFreeMargin()/ 5000 ;
Lots= MathMin ( 15 , MathMax ( 0.01 ,Lots));
if (Lots< 0.1 ) Lots= NormalizeDouble (Lots, 2 );
else
{
if (Lots< 1 ) Lots= NormalizeDouble (Lots, 1 );
else Lots= NormalizeDouble (Lots, 0 );
}
return (Lots);
}
//+------------------------------------------------------------------+//| Init metod Puria function |//+------------------------------------------------------------------+void InitMetod() // Опредеоение начального пересечения мувингов
{
double malw,mas1,mas2;
malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 0 );
mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 0 );
mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 0 );
if ((malw<=mas1 && malw>=mas2) || (malw>=mas1 && malw<=mas2))
{
Init= false ;
OrderBuy= true ;
OrderSell= true ;
}
return;
}
사실, 내가 시도했지만 여기에 추가할 수 없었던 것: 지표의 모든 조건이 일치한 후(양초 의 시가에서), 어드바이저가 연속으로 4개의 양초 시가를 기다리도록 합니다 .
1. 첫 번째 캔들의 시가 - (5) (75) 및 (85) + MACD 바가 0 이상 - 확인 4개 중 1개 ; 2. 두 번째 캔들 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4개 중 2개의 확인이 ; 3. 3번째 캔들 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4건 중 3건은 ; 4. 4번째 캔들 시가 - (5) (75) 및 (85) + MACD 바 0 이상 시가 - 4개 중 4개 확인 — 같은 양초(4일)에 매수할 거래를 엽니다.
에 대한 주문과 유사한 상황 매도 , 지표만 다른 방향으로 열려야 합니다. 그리고 중요한 점이 있습니다. 예를 들어 첫 번째 양초에서 네 번째 양초까지의 어느 단계에서나 표시기가 위치를 변경합니다. (예를 들어, 3번째 시가 캔들에서 MACD 막대는 0 또는 = 0 아래에서 열립니다) – 그러면 모든 것이 재설정됩니다. 신호는 연속으로 4개의 양초를 열 수 있는 테스트를 통과하지 못했습니다 .
pliz, 숙련된 프로그래머, 이러한 조건을 충족하려면 코드에서 무엇을 변경해야 합니까? 그리고 나는 많은 것을 시도했고 일반적으로 xs ...
테스터용
OrderSend
빠른 서버에서도 작동하지만 테스터가 아닌 경우 문서에 따라 수행하는 것이 좋습니다. :)
사실, 내가 시도했지만 여기에 추가할 수 없었던 것: 지표의 모든 조건이 일치한 후(양초 의 시가에서), 어드바이저가 연속으로 4개의 양초 시가를 기다리도록 합니다 .
1. 첫 번째 캔들의 시가 - (5) (75) 및 (85) + MACD 바가 0 이상 - 확인 4개 중 1개 ;
2. 두 번째 캔들 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4개 중 2개의 확인이 ;
3. 3번째 캔들 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4건 중 3건은 ;
4. 4번째 캔들 시가 - (5) (75) 및 (85) + MACD 바 0 이상 시가 - 4개 중 4개 확인 — 같은 양초(4일)에 매수할 거래를 엽니다.
에 대한 주문과 유사한 상황 매도 , 지표만 다른 방향으로 열려야 합니다. 그리고 중요한 점이 있습니다. 예를 들어 첫 번째 양초에서 네 번째 양초까지의 어느 단계에서나 표시기가 위치를 변경합니다. (예를 들어, 3번째 시가 캔들에서 MACD 막대는 0 또는 = 0 아래에서 열립니다) – 그러면 모든 것이 재설정됩니다. 신호는 연속으로 4개의 양초를 열 수 있는 테스트를 통과하지 못했습니다 .
pliz, 숙련된 프로그래머, 이러한 조건을 충족하려면 코드에서 무엇을 변경해야 합니까? 그리고 나는 많은 것을 시도했고 일반적으로 xs ...
if (malw>mas1 && malw>mas2 && OrderSell)
속담처럼 액면 그대로 받아들이지 마십시오.
OrderSell
xs에 무엇이 포함될 수 있는지, 코드에서 의사 결정 논리를 분리하십시오.
artem artem # :
1. 첫 번째 캔들의 시가 - (5) (75) 및 (85) + MACD 바가 0 이상 - 확인 4개 중 1개 ;
2. 두 번째 캔들 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4개 중 2개의 확인이 ;
3. 3번째 캔들의 시가 - (5) (75), (85) + MACD 바 0 이상 시가 - 4건 중 3건은 ;
4. 4번째 캔들 시가 - (5) (75), (85) + MACD 0선 상회 - 4개 중 4개 확인 — 같은 양초(4일)에 매수할 거래를 엽니다.
하나의 가치를 망치고 - 다른 하나, 아무것도? 첫 번째 블록 = 솔루션, 두 번째 블록 = 솔루션, 블록 비교를 나눕니다.
하나의 가치를 망치고 - 다른 하나, 아무것도? 첫 번째 블록 = 솔루션, 두 번째 블록 = 솔루션, 블록 비교를 나눕니다.
코드에 논리적 오류가 있다는 것이 밝혀졌습니다.
좋아, 하지만 변수를 그렇게 사용하면 변수가 충돌하고 "기적"이 무엇인지 이해하지 못할 것입니다.
좋아, 하지만 변수를 그렇게 사용하면 변수가 충돌하고 "기적"이 무엇인지 이해하지 못할 것입니다.
다른 옵션을 알고 있다면 다음을 작성하십시오 ...
사람들을 도우십시오)