결과적으로 StrToTime (StartRange) 및 StrToTime(EndRange)은 0을 반환 합니다.
- 그 이유와 해결 방법은?
//функция bool isTradeTimeString (string TimeBegin ="00:00",string TimeEnd ="00:00"){datetime dtBegin , dtEnd ;// Время начала и окончания работыint hc , he ;// Часы текущего времени и окончания работы
dtBegin =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE )+" "+ TimeBegin );
dtEnd =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE )+" "+ TimeEnd );
hc =TimeHour(TimeCurrent());
he =TimeHour( dtEnd );if( dtBegin >= dtEnd ){if( hc >= he ) dtEnd +=24*60*60;else dtBegin -=24*60*60;}if(TimeCurrent()>= dtBegin &&TimeCurrent()<= dtEnd )return( True );elsereturn( False );}//+-------------------------------------------------------------------
вставить в глоб . переменные
//extern string TimeBegin = "00:00";//extern string TimeEnd = "00:00";
а это уже в код - проверка
/*
isTradeTimeString ();//торговля по времениif( isTradeTimeString ( TimeBegin , TimeEnd )){//торгуем}
*/
//---- name for DataWindow and indicator subwindow label IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Averages Convergence/Divergence | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- macd counted in the 1-st buffer for(int i=0; i<limit; i++) MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); //---- signal line counted in the 2-nd buffer for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i); //---- done for(i=0; i<limit; i++) EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA, 0 ,MODE_SMA,i); //---- done return(0); } //+------------------------------------------------------------------+
예를 들어 -5 막대로 음수 오프셋으로 MA를 만들 수 있습니까? -5로 설정하면 헛소리를 그립니다 ??
extern int FastEMA=12; extern int SlowEMA=26; extern int SignalSMA=9; extern int SMA=12; //---переменные---------- double k,k1,k2; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5); k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5); k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5); if (OrdersTotal()<=2) { if (k>0 && k2>k1+0.0005) ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point); ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242); ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow); } return(0); } //+------------------------------------------------------------------+
내가 설정한 표시기에서(시간[i]와 비교하기 위해):
그런 다음 루프에서
결과적으로 StrToTime(StartRange) 및 StrToTime(EndRange)은 0을 반환 합니다.
- 그 이유와 해결 방법은?
이런. 날짜 시간 변수를 StrToTime 함수에 어떻게 붙일 수 있습니까? 거기에 문자열이 필요합니다!.
아니면 작업 양식 D'1970.12.24'가 문자열이라고 생각하십니까? 당신은 잘못.
TimeToStr이 필요할까요?
결과적으로 StrToTime (StartRange) 및 StrToTime(EndRange)은 0을 반환 합니다.
- 그 이유와 해결 방법은?
분명히 내 실수였습니다 (오해 된 예
문서에서). "datetime" 유형의 변수를 Time[i]와 직접 비교할 수 있음이 밝혀졌습니다.
도와 주셔서 감사합니다!
//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];
double EMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);
SetIndexBuffer(2,EMABuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
for(i=0; i<limit; i++)
EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA, 0 ,MODE_SMA,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+
예를 들어 -5 막대로 음수 오프셋으로 MA를 만들 수 있습니까? -5로 설정하면 헛소리를 그립니다 ??
как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??
그리고 왜 실제로 헛소리입니까? 보고 싶은 것이 있습니까? 또는 내가 이해하지 못하는 것!
위는 귀하의 변형이고 아래는 -5 의 이동이 있는 변형입니다! 방금 -5 막대만큼 이동했습니다. 무엇이 잘못되었거나 잘못되었나요????????
그리고 왜 실제로 헛소리입니까? 보고 싶은 것이 있습니까? 또는 내가 이해하지 못하는 것!
위는 귀하의 변형이고 아래는 -5 의 이동이 있는 변형입니다! 방금 -5 막대만큼 이동했습니다. 무엇이 잘못되었거나 잘못되었나요????????
네, 하지만 그 때 이 고문을 통해 전화하려고 할 때입니다.
//+------------------------------------------------------------------+
//| fgfgfgfgfgf.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---переменные----------
double k,k1,k2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5);
k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5);
k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5);
if (OrdersTotal()<=2)
{
if (k>0 && k2>k1+0.0005)
ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point);
ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242);
ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow);
}
return(0);
}
//+------------------------------------------------------------------+
넌센스로 판명
나는 그렇게한다
1. 특정 기간에 테스트를 시작합니다.
2. 인디케이터를 붙인다
3 헛소리
어떻게 하면 될까요 제발 알려주세요
그래서 내 고문은 하루에 한 번만 주문을 엽니다.
그가 주문을 열면 닫고 다음 날까지 꺼집니다.
내가 알기 로는 다음 거래의 내역 에서 바트해야합니다 .. 날짜와 비교하고 그 날에 주문이 이미 마감되었으면 어드바이저를 끄십시오 ..
내가 생각하는 방향으로?
완전히 이해할 수 없습니다. mql은 아직 초보자이기 때문에
좋은 오후입니다, 동료들.
프로그래밍 방식으로 방법을 알려주십시오. 전문가, 직선의 변곡점을 설명하십시오. 전문가는 MA 위치의 두 가지 변형을 분리해야 합니다. MA는 성장하고 MA는 떨어지고 있습니다.