이중 check_lot(이중 &lo) { 더블 l = MarketInfo(Symbol(),MODE_LOTSTEP); 정수 확인 = 0; 동안 ( l < 1 ){l*=10;ok++;} if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT); if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT); return(NormalizeDouble(lo,ok));
모두에게 좋은 하루. 여러분, 질문이 있습니다. 알려주세요. Alpari 및 Master_Forex와 함께 작업하는 경우 작업 터미널에서 다운로드한 스토리에 대해 EA를 테스트합니다. Tick Data Suite와 같은 내 DS의 터미널로 90% 시뮬레이션, 특히 Alpari 또는 Master_Forex, 방법을 사용하여 ....... 다양한 조건 및 매개변수에서 반년 동안 테스트한 후 최상의 것을 선택한 다음 다시 테스트 그리고 다음 6개월까지 2-5g이 지나면 모든 것이 무리를 이루고 올빼미가 준비됩니다. 신뢰할 수 있는 수입원이 될 수 있습니까? 아니면 여전히 99%와 그에 연결된 모든 것이 필요합니까?
포럼에서 이것이 가능하다는 것을 발견했습니다: https://www.mql5.com/ru/forum/141467
그리고 틱 에뮬레이터를 찾는 것이 좋습니다.
즉, MQL4를 사용하면 주말에 틱 시뮬레이션을 구현할 수 없습니다???
해당 페이지에서 게시물에 게시한 링크입니다. 거기에서 더 자세히 읽으십시오.
예, 저는 바보입니다. start()가 필요합니다. init(){}를 통해 추가로 실행...
int 초기화(){시작();}
...
무효 시작(){...}
덕분에 알았습니다.
보너스를 돈으로 교환하는 방법?
누구의 보너스?
다음 코드가 있습니다.
extern datetime 시작 = D'2013.10.17 23:59';
정수 시작()
{
int b1=iBarShift( 심볼() ,0,시작,0);
더블 hb=iHigh(Symbol(),0,b1); //지정된 날짜의 막대
이중 hb2=iHigh(Symbol(),0,b1-1); //지정된 날짜에서 내일을 바
지정된 날짜부터 어제 쓰는 방법을 알려주세요. 그렇지 않으면 double hb3=iHigh(Symbol(),0,b1+1); 작동하지 않습니다...
여보세요!!! 내 고문이 무브먼트에 대한 명령을 엽니다. 변경하는 방법 또는 변경할 위치를 알려주세요???
문자열 GLOB_START;
정수 초기화()
{
GLOB_START = "@" + DoubleToStr(ID,0) + "@" + "_start";
if ( !GlobalVariableCheck( GLOB_START ) )GlobalVariableSet(GLOB_START,TimeCurrent());
리턴(0);
}
정수 초기화()
{
스위치( 초기화되지 않은 이유() )
{
사례 REASON_REMOVE: delete_glob ( "@" + DoubleToStr(ID,0) + "@" );
}
if ( IsTesting() )delete_glob ( "@" + DoubleToStr(ID,0) + "@" );
리턴(0);
}
무효 delete_glob (문자열 c)
{
정수 나;
for ( i = GlobalVariablesTotal()-1; i>= 0 ; i-- )if ( StringFind(GlobalVariableName(i),c) >= 0 )GlobalVariableDel(GlobalVariableName(i));
}
정수 시작()
{
주석(정보());
int KOL_BUY = order_total(0);
int KOL_SELL = order_total(1);
더블 엘;
if ( order_total() == 0 )
{
오픈(0,랏,0,TP);
오픈(1,랏,0,TP);
}
if ( KOL_BUY == 0 && KOL_SELL != 0 )
{
오픈(0,랏,0,TP);
내가 = last_trade(1);
오픈(1,1,0,0);
수정 주문(1);
}
if ( KOL_BUY != 0 && KOL_SELL == 0 )
{
오픈(1,랏,0,TP);
내가 = last_trade(0);
오픈(0,1,0,0);
수정 주문(0);
}
리턴(0);
}
문자열 정보()
{
정수 나;
이중 버프_1 = 0, 버프_2 = 0, 버프_3 = 0;
문자열 res = "\n";
for( i = OrdersHistoryTotal() - 1, i >= 0, i--)
{
주문 선택(i,SELECT_BY_POS,MODE_HISTORY);
if( OrderMagicNumber() == ID )
{
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,0) )buff_1 += OrderProfit();
if ( OrderOpenTime() >= iTime(NULL,PERIOD_D1,1) && OrderOpenTime() < iTime(NULL,PERIOD_D1,0) )buff_2 += OrderProfit();
if ( OrderOpenTime() >= GlobalVariableGet(GLOB_START) )buff_3 += OrderProfit();
}
}
res = res + "예금 통화의 이익 " + TimeToStr(iTime(NULL,PERIOD_D1,0)) + ": " + DoubleToStr(buff_1,0) + "\n" + "\n";
res = res + "예금 통화의 이익 " + TimeToStr(iTime(NULL,PERIOD_D1,1)) + ": " + DoubleToStr(buff_2,0) + "\n" + "\n";
res = res + "예금 통화 총 이익: "+ DoubleToStr(buff_3,0) + "\n";
반환(res);
}
무효 modify_orders( 정수 유형 )
{
정수 나;
datetime time_last = 0, time_first = TimeCurrent();
이중 SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*MarketInfo(Symbol(),MODE_POINT), op_pr_last, op_pr_first, 레벨;
for( i = OrdersTotal() - 1, i >= 0, i-- )
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == 유형)
{
if ( OrderOpenTime() > time_last )
{
op_pr_last = OrderOpenPrice();
time_last = OrderOpenTime();
}
if ( OrderOpenTime() < time_first )
{
op_pr_first = OrderOpenPrice();
time_first = OrderOpenTime();
}
}
}
if ( 유형 == 0 ) 레벨 = op_pr_last + MathAbs(op_pr_last-op_pr_first) * (SL/100);
if ( 유형 == 1 ) 레벨 = op_pr_last - MathAbs(op_pr_last-op_pr_first) * (SL/100);
for( i = OrdersTotal() - 1, i >= 0, i -- )
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == ID && OrderType() == 유형 && NormalizeDouble(OrderTakeProfit(),Digits) != NormalizeDouble(level,Digits) )OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),level,0 );
}
}
이중 last_trade( int t )
{
정수 나;
이중 해상도 = -1;
날짜 시간 = 0;
for(i=OrdersTotal()-1;i>=0;i--)
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if(OrderOpenTime()>time && OrderMagicNumber()==ID && OrderType() == t)
{
res = OrderLots();
시간 = OrderOpenTime();
}
}
if (승수)return(res * Lot_koeff);
if ( !multiplier )return(res + Lot_koeff);
}
int open(int 유형, 이중 l, 이중 sl=0, 이중 tp=0, 문자열 통신 = "")
{
int isOpened = 0, 시도 = 0;
더블 s,t;
동안 ( IsTradeContextBusy() ){Sleep(500);}
새로 고침();
if ( sl != 0 && sl < MarketInfo(Symbol(),MODE_STOPLEVEL) )sl = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( tp != 0 && tp < MarketInfo(Symbol(),MODE_STOPLEVEL) )tp = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ( 유형 == 0 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 질문 + tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 입찰가 - sl * 포인트;
}
if ( 유형 == 1 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 입찰가 - tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 묻다 + sl * 포인트;
}
s = NormalizeDouble(s, 자릿수);
t = NormalizeDouble(t, 자릿수);
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
수면(500);
동안(isOpened<0)
{
동안 ( IsTradeContextBusy() ){Sleep(500);}
새로 고침();
if ( 유형 == 0 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 입찰가 + tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 입찰가 - sl * 포인트;
}
if ( 유형 == 1 )
{
if (tp == 0)t = 0;
if ( tp != 0 )t = 질문 - tp * 포인트;
if ( sl == 0 )s = 0;
if ( sl != 0 )s = 묻다 + sl * 포인트;
}
s = NormalizeDouble(s, 자릿수);
t = NormalizeDouble(t, 자릿수);
시도++;
if(type==0)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Ask,Digits),10,s,t,comm,ID);
if(type==1)isOpened = OrderSend(Symbol(),type,check_lot(l),NormalizeDouble(Bid,Digits),10,s,t,comm,ID);
if(시도 > 5) 중단;
if(isOpened>=0) break;
수면(500);
}
if(isOpened<0) Alert("주문이 열리지 않았습니다. 오류:", GetLastError());
반환(isOpened);
}
int order_total( int type_1 = -1, int type_2 = -1 )
{
정수 나;
intcol=0;
for(i=OrdersTotal()-1;i>=0;i--)
{
주문 선택(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==ID && (OrderType() == type_1 || OrderType() == type_2) )kol++;
if(OrderMagicNumber()==ID && type_1 == -1 && type_2 == -1 )kol++;
}
반환(열);
}
이중 check_lot(이중 &lo)
{
더블 l = MarketInfo(Symbol(),MODE_LOTSTEP);
정수 확인 = 0;
동안 ( l < 1 ){l*=10;ok++;}
if( lo < MarketInfo(Symbol(),MODE_MINLOT) )lo = MarketInfo(Symbol(),MODE_MINLOT);
if( lo > MarketInfo(Symbol(),MODE_MAXLOT) )lo = MarketInfo(Symbol(),MODE_MAXLOT);
return(NormalizeDouble(lo,ok));
"Equity:"(AccountEquity())에 대한 후행을 만드는 방법은 무엇입니까?
옵션
외부 이중 TrailingStart = 10000; // 트롤의 시작 레벨
extern 이중 후행 정지 = 100; // 트롤 크기
외부 이중 TrailingStep = 10; // 트롤 단계
연속으로 두 개의 위/아래 프랙탈을 찾는 방법은 무엇입니까? 아래 그림.
지표를 쓰려고 했는데 생각이 안나네요.
아니면 누군가가 그러한 지표가 준비된 것을 보았습니까?