그래서 거래를 조금 로봇화하기로 결정했습니다. MT4 터미널 " 움직이는 " 트렌드 어드바이저를 기반으로평균 ". 마차와 이런 유형의 고문이 있는 작은 카트가 있지만 내가 만난 사람 중 내 요구 사항을 완전히 충족하지 못하는 사람은 없습니다. 일반적으로 MT4 터미널에서 어드바이저에서 멈추기로 결정하고 약간 수정했습니다. 나는 그것에 하나의 틱을 더 추가하고 진입 조건을 변경하고 정지, 이익을 추가하고 거래 시작 시간을 제한했습니다 . 더 추가하고 싶습니다.
1) 조정 가능한 손절매로 한 번에 두 개의 주문을 열 수 있는 기능, 무손실로 전환, 이익을 취하다.
2) 방문 횟수 조정 가능 낮.
3) 오픈트랜잭션으로 익일에 들어갈 수 있는 조정가능한 기회.
4) 손절매로 종료, 손실 없음 또는 차익 실현.
5) 최대 위험 계산을 삭제합니다. (저는 별로 필요하지 않다고 봅니다. 게다가 그가 어떻게 위험을 계산하는지 아직도 이해하지 못합니다. 랜턴에서 로트가 0.10 또는 1.00에서 열린 것 같습니다)
6) USDJPY 통화 쌍에서 올바르게 작동하지 않음
아마도 고문의 작업을 개선하기 위해 무언가를 수정하고 청소해야 할 것입니다. 도움 또는 조언.
10개 이상의 차트가 동시에 작동하며 통화 쌍 차트의 각 창에는 자체 어드바이저가 있습니다. 코드를 첨부합니다. 응답해 주신 모든 분들께 감사드립니다.
//+------------------------------------------------------------------+//| MA_MA_1.mq4 |//| Copyright 2017, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2017, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//#property strict#define MAGICMA 20131112//--- Inputsinputdouble SL = 500 ; //стоп лосinputdouble TakeProfit = 1000 ; //тейк профитinputdouble Lots = 0.01 ; //розмер лота//input double MaximumRisk =0.1; //отключил не понятна логика расчетаinputdouble DecreaseFactor = 3 ; //фактор снижение(наверно проскальзывание)inputint MovingPeriod1 = 36 ; //медленная средняяinputint MovingPeriod2 = 12 ; //быстрая средняяinputint MovingShift1 = 10 ; //сдвиг медленной среднейinputint MovingShift2 = 0 ; //сдвиг быстрой среднейexternint TimeStart = 8 ; //время начала торговexternint TimeStop = 20 ; //время окончания торгов//+------------------------------------------------------------------+//| Calculate open positions //считаем открытые позиции |//+------------------------------------------------------------------+int CalculateCurrentOrders( string symbol)
{
int buys= 0 ,sells= 0 ;
//---for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) break ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MAGICMA)
{
if ( OrderType ()== OP_BUY ) buys++;
if ( OrderType ()== OP_SELL ) sells++;
}
}
//--- return orders volume //объём ордеров на возвратif (buys> 0 ) return (buys);
elsereturn (-sells);
}
//+------------------------------------------------------------------+//| Calculate optimal lot size //расчет оптимального размера лота |//+------------------------------------------------------------------+double LotsOptimized()
{
double lot=Lots;
int orders= HistoryTotal (); // history orders total (история заказов всего)int losses= 0 ; // number of losses orders without a break (количество потерь заказов без перерыва)//--- select lot size //ОТКЛЮЧИЛ выбор размер лота. //lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);//(логика выбора мне не понятна)//--- calcuulate number of losses orders without a break (Расчет количества заказов на потери без перерыва)// if(DecreaseFactor>0)// {// for(int i=orders-1;i>=0;i--)// {// if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)// {// Print("Error in history!");// break;// }// if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)// continue;//---// if(OrderProfit()>0) break;// if(OrderProfit()<0) losses++;// }// if(losses>1)// lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);// }//--- return lot size (розмер возвращаемого лота)if (lot< 0.1 ) lot= 0.1 ;
return (lot);
}
//+------------------------------------------------------------------+//| Check for open order conditions //проверка условий для открытия ордера |//+------------------------------------------------------------------+void CheckForOpen()
{
double ma1; //медленная средняяdouble ma2; //быстрая средняяint res;
//--- go trading only for first tiks of new bar// торговать только на первом тике нового бараif ( Volume [ 0 ]> 1 ) return ;
//--- get Moving Average //получение скользящих средних
ma1= iMA ( NULL , 0 ,MovingPeriod1,MovingShift1, MODE_SMA , PRICE_CLOSE , 0 ); //медленная
ma2= iMA ( NULL , 0 ,MovingPeriod2,MovingShift2, MODE_SMA , PRICE_CLOSE , 0 ); //быстрая//--- sell conditions //условия для продажиif (ma1<ma2 && Close [ 1 ]<ma1 && TimeHour ( TimeCurrent ())>TimeStart && TimeHour ( TimeCurrent ())<TimeStop)
{
res= OrderSend ( Symbol (), OP_SELL ,LotsOptimized(), Bid , 3 , Bid +SL* Point , Bid -TakeProfit* Point , "" ,MAGICMA, 0 ,Red);
return ;
}
//--- buy conditions //условия для покупкиif (ma1>ma2 && Close [ 1 ]>ma1 && TimeHour ( TimeCurrent ())>TimeStart && TimeHour ( TimeCurrent ())<TimeStop)
{
res= OrderSend ( Symbol (), OP_BUY ,LotsOptimized(), Ask , 3 , Ask -SL* Point , Ask +TakeProfit* Point , "" ,MAGICMA, 0 ,Blue);
return ;
}
//---
}
//+------------------------------------------------------------------+//| Check for close order conditions //проверка условий для закрытия ордера |//+------------------------------------------------------------------+void CheckForClose()
{
double ma1; //медленнаяdouble ma2; //быстрая//--- go trading only for first tiks of new bar// торговать толькона тике нового бараif ( Volume [ 0 ]> 1 ) return ;
//--- get Moving Average //получение средних
ma1= iMA ( NULL , 0 ,MovingPeriod1,MovingShift1, MODE_SMA , PRICE_CLOSE , 0 ); //медленная
ma2= iMA ( NULL , 0 ,MovingPeriod2,MovingShift2, MODE_SMA , PRICE_CLOSE , 0 ); //быстрая//---for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) break ;
if ( OrderMagicNumber ()!=MAGICMA || OrderSymbol ()!= Symbol ()) continue ;
//--- check order type //проверка типа ордераif ( OrderType ()== OP_BUY )
{
if ( Close [ 1 ]<ma2 && Open [ 2 ]> Close [ 1 ] && ma1<ma2) //(Open[1]>ma && Close[1]<ma)
{
if (! OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
break ;
}
if ( OrderType ()== OP_SELL )
{
if ( Close [ 1 ]>ma2 && Open [ 2 ]< Close [ 1 ] && ma1>ma2)
{
if (! OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
break ;
}
}
//---
}
//+------------------------------------------------------------------+//| OnTick function //функция нового тика |//+------------------------------------------------------------------+voidOnTick ()
{
//--- check for history and tradingif ( Bars < 100 || IsTradeAllowed ()== false )
return ;
//--- calculate open orders by current symbolif (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
else CheckForClose();
//---
}
//+------------------------------------------------------------------+
안녕하세요. 이 전략에 대한 전문가 고문을 작성할 수 있습니다 https://www.youtube.com/watch?v=V58JIhy2rw4. 또는 fxcash.ru 사이트에서 리베이트로 돈을 벌기 위해 시간을 표시하거나 약간 플러스인 조언자가 없습니다. 감사합니다.무엇이든 VK https://vk.com/id16112208 또는 개인으로 작성하십시오.
안녕하세요!
그래서 거래를 조금 로봇화하기로 결정했습니다. MT4 터미널 " 움직이는 " 트렌드 어드바이저를 기반으로 평균 ". 마차와 이런 유형의 고문이 있는 작은 카트가 있지만 내가 만난 사람 중 내 요구 사항을 완전히 충족하지 못하는 사람은 없습니다. 일반적으로 MT4 터미널에서 어드바이저에서 멈추기로 결정하고 약간 수정했습니다. 나는 그것에 하나의 틱을 더 추가하고 진입 조건을 변경하고 정지, 이익을 추가하고 거래 시작 시간을 제한했습니다 . 더 추가하고 싶습니다.
1) 조정 가능한 손절매로 한 번에 두 개의 주문을 열 수 있는 기능, 무손실로 전환, 이익을 취하다.
2) 방문 횟수 조정 가능 낮.
3) 오픈트랜잭션으로 익일에 들어갈 수 있는 조정가능한 기회.
4) 손절매로 종료, 손실 없음 또는 차익 실현.
5) 최대 위험 계산을 삭제합니다. (저는 별로 필요하지 않다고 봅니다. 게다가 그가 어떻게 위험을 계산하는지 아직도 이해하지 못합니다. 랜턴에서 로트가 0.10 또는 1.00에서 열린 것 같습니다)
6) USDJPY 통화 쌍에서 올바르게 작동하지 않음
아마도 고문의 작업을 개선하기 위해 무언가를 수정하고 청소해야 할 것입니다. 도움 또는 조언.
10개 이상의 차트가 동시에 작동하며 통화 쌍 차트의 각 창에는 자체 어드바이저가 있습니다. 코드를 첨부합니다. 응답해 주신 모든 분들께 감사드립니다.
안녕하세요. 이 전략에 대한 전문가 고문을 작성할 수 있습니다 https://www.youtube.com/watch?v=V58JIhy2rw4. 또는 fxcash.ru 사이트에서 리베이트로 돈을 벌기 위해 시간을 표시하거나 약간 플러스인 조언자가 없습니다. 감사합니다.무엇이든 VK https://vk.com/id16112208 또는 개인으로 작성하십시오.
Lavin의 스레드를 보면 이 차량에 대한 조언자가 있습니다.
안녕하세요!
도와주세요? EA는 매 틱마다 거래를 엽니다. 약 5개의 거래 또는 원하는 만큼만 열려면 코드를 어떻게 작성해야 합니까?
외부 int tp=50;
외부 int sl=200;
외부 이중 로트=0.01;
oid OnTick()
{
OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsaho",1,0,Red);
}
무엇을 변경하고 코드에 추가해야 합니까?
고맙습니다!
복잡하지 않으면 대답 할 수 있습니다 ***
고맙습니다!
좋은 오후입니다. 간단한 Expert Advisor가 필요하고 기성품 템플릿을 다시 만들려고했는데 결과적으로 몇 가지 오류가 발생했습니다. 하지만 올빼미만 있으면 됩니다.
1) 닫힌 양초가 강세이면 매수 포지션을 열고 닫은 양초가 약세이면 매도 포지션을 취합니다.
2) 그리고 각 촛불 이후.
나는 두 번째 조건을 얻을 수 없습니다.
누구든지 도울 수 있다면 나는 매우 감사 할 것입니다.
도와주세요? EA는 매 틱마다 거래를 엽니다. 약 5개의 거래 또는 원하는 만큼만 열려면 코드를 어떻게 작성해야 합니까?
무엇을 변경하고 코드에 추가해야 합니까?