//функция 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); } //+------------------------------------------------------------------+
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); } //+------------------------------------------------------------------+
Indicatorに設定しました(その後、Time[i]と比較するため)。
その後、ループの中で
その結果、StrToTime(StartRange) とStrToTime(EndRange) は Zeroを生成 します。
- なぜ、どのように修正すればよいのでしょうか?
おっと それと、StrToTime関数にdatetime変数を入れるのはどうやるんだ?紐が入ってるはずなんだけどな~。
それとも、ジョブフォームD'1970.12.24'が文字列だとでも思っているのでしょうか?あなたは勘違いしています。
TimeToStrが必要なのでは?
この結果、StrToTime(StartRange) とStrToTime(EndRange) は ゼロを生成 します。
- なぜ、どうすれば直るのか?
明らかに私のミスです(誤訳例
ドキュメントより)。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);
}
//+------------------------------------------------------------------+
マイナスオフセットのMAを作るにはどうしたらいいのでしょうか?
как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??
なぜデタラメなのか? 見たくないものがあるのでしょうか?それとも何か見落としているのか !
上はあなたのバリアント、下は-5のシフトをしたバリアントです!ちょうど-5小節シフトすることによって、何が間違っているか、間違っていますか?
なぜデタラメなのか? 見たくないものがあるのでしょうか?それとも何か見落としているのか !
上はあなたのバリアント、下は-5のシフトをしたバリアントです!ちょうど-5小節シフトすることによって、何が間違っているか、間違っていますか?
まあ、それはそうなんですが、EAを呼び出そうとすると。
//+------------------------------------------------------------------+
//| 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 何か変なものが出てくる。
を作るにはどうしたらいいのでしょうか?
一日に一度だけ注文を出すようにしたいのですが。
もしそれが注文を開いた後、閉じて翌日までスイッチを切ってしまったら。
わかりました。履歴から最新の取引を 取得し、その日付と比較して、その日にすでに注文が終了していれば、EAを停止させる必要があります。
というのは、正しい方向性で考えているか?
私はmqlの初心者なので、よく理解できません。
こんにちは、同僚たち。
専門家がМАの位置について、МАの上昇とМАの下降の2つの選択肢を区別しなければならない場合、ソフトウェアで、つまり専門家に、線の変曲点を説明する方法を教えてください。