[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 1121 1...111411151116111711181119112011211122112311241125112611271128...1145 新しいコメント dzhini 2011.01.10 22:49 #11201 おつかれさまでした/おやすみなさい 私は動作しませんこの原始的な方法を使用して、取引を逆にしようとしている(エキスパート-アドバイザは、ティックで計算されます)。 if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // 買い注文があったかどうか && ローソク足が下値で閉じたかどうか判断する { CheckForClose(); // 注文をクローズします。 OpenSell(); //売り 注文を出す を返します。 } どこを間違えているのか、アドバイスをお願いします。また、このギャップを埋めるようなリンクをいただけるとありがたいです。 --- 2011.01.10 23:05 #11202 dzhini: 私はこの原始的な方法でリバース・トレードをしようとしていますが、これはうまくいきません(Expert Advisorはティックで計算します)。 if(CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // 買い注文があったかどうか && ローソクがボトムレベルより下で閉じたかどうかをチェックします。 この関数では、おそらくすべての注文をカウントしています。 Naomi 2011.01.11 06:45 #11203 Time1とTime2の間に何分あるかは、どのように判断すればよいですか? datetime Time_1 = D'2011.01.12 13:30'; datetime Time_2 = D'2011.01.05 10:30'; минут = Time_1- Time_2 dzhini 2011.01.11 08:52 #11204 sergeev: これはおそらく、すべての注文をカウントする関数です。これは、Buy であるべきです。 これは標準機能です。 int CalculateCurrentOrders(文字列シンボル){int buys=0,sells=0;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){if(OrderType()==OP_BUY) buys++;if(OrderType()==OP_SELL) sells++;}} if(buys>0) return(buys);else return(-sells);} 0を超えると買い 注文、0を下回ると売り注文 ))) --- 2011.01.11 09:17 #11205 Eliza: Time1とTime2の間に何分あるかは、どのように判断すればよいですか? の場合、その差は秒数で返される。 を60で割ると、分数になります。 dzhini 2011.01.11 10:30 #11206 取引を取り消す。Expert Advisor の構造を変更 - 機能を削除しました。 extern double TP = 70; //takeprofit extern double SL = 0; //stoploss extern double Lot = 0.1; double HighLevel; double LowLevel; int resBuy=0; int resSell=0; //+----------------------------------------------------------------+ //|エキスパート初期化関数| //+--------------------------------------------------------+ int init() { HighLevel=High[1]; LowLevel=Low[1]; return; } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。 //+------------------------------------------------------------------------+ //| expert function | //+------------------------------------------------------------------------+ void start() { if(Bars<100 && IsTradeAllowed()==false) return; if(resBuy==0 && resSell==0 && CheckBreak()==-1) { resSell=OrderSend(Symbol(,OP_SELL,Lot,Bid,2,0,Bid -TP,",MAGICMA,0,Red); HighLevel=LowLevel; LowLevel=Close[1]; return; } if(resBuy==0 && resSell==0 && CheckBreak()==-1)& CheckBreak()==1) { resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue); LowLevel=HighLevel; HighLevel=Close[1]; return; } if(resBuy!=0 && resSell==0 && Close[1]<LowLevel) //------------------------------------- この部分に興味があります:1つのバーでのクローズとオープニング { bool closeBuy=OrderClose(resBuy, Lot, Bid, 2, Blue); // while(!IsTradeAllowed())Sleep(100); resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red); HighLevel=LowLevel; LowLevel=Close[1]; return; } 、(resSell!=0 && resBuy==0 && Close[1]>HighLevel) //------------------------------------- この部分に興味があります:1つのバーでのクローズとオープニング { bool closeSell=OrderClose(resSell, Lot, Ask, 0.0002, Red); // while(!IsTradeAllowed())Sleep(100); resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue); LowLevel=HighLevel; HighLevel=Close[1]; return; } //------------------------------------------------- チェック Low&...High break (Func) double CheckBreak() { double candle=Open[1]-Close[1]; if(candle>0 && Low[1]<LowLevel) return(-1); if(candle<0 && High[1]>HighLevel) return(1); } }. [WARNING CLOSED!] Any newbie [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. [Archive!] Any rookie question, Naomi 2011.01.11 11:05 #11207 sergeev: difference は秒数を返す。 を60で割ると、分数になります。 1971.03.04 12:00という日付が表示されるだけなのですが、これは変換する必要があるのでしょうか? extern datetime Time_1 = D'2011.01.12 13:30'; extern datetime Time_2 = D'2011.01.05 10:30'; bool Commentari = true; int start() { if (Commentari){ Comment( "\n Дата = " + TimeToStr((Time_1-Time_2)/60)," минут", "\n==============================");} return(0); } --- 2011.01.11 11:08 #11208 Eliza: 日付が出るだけなので、変換が必要なのでは? まず、なぜ60倍なのですか? 2つ目-00:15のように分数を時間として表示したい場合。 は、60で割ったりかけたりする必要はありません。 Naomi 2011.01.11 11:24 #11209 sergeev: まず、なぜ60倍なのですか? 2つ目 - 画面に分数を00:15のような時間として表示したい場合。 は、60で割ったりかけたりする必要はないのです。 はい、除算のために修正しましたが、年が1970.01.01 02:51と出てしまいます。 画面には必要ないので、その時間間隔の、日付のない分数を求めたいのですが...。 除算しなくても、日付が出力されるのですが、関数の元になる日付を減算すればいいのでしょうか? datetimeは 日付と時刻で、1970年1月1日0時からの経過秒数を含む符号なし整数である。 extern datetime Time_1 = D'2011.01.12 13:30'; extern datetime Time_2 = D'2011.01.05 10:30'; datetime me_2 = D'1970.01.01 00:00'; bool Commentari = true; int start() { if (Commentari){ Comment( "\n Дата = " + TimeToStr(me_2-(Time_1-Time_2))," минут", "\n==============================");} return(0); } 1970.01.01 02:51を引くと、無効な時間が表示される。 それとも、μl言語では取得できないのでしょうか? --- 2011.01.11 11:48 #11210 単に分単位が欲しいだけなら、TimeToStrを 使う理由は全くありません。 Timeは通常のint型数値です。 または、TIME _MINUTE フラグ のときのみ TimeToStr を使用します。 1...111411151116111711181119112011211122112311241125112611271128...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
おつかれさまでした/おやすみなさい
私は動作しませんこの原始的な方法を使用して、取引を逆にしようとしている(エキスパート-アドバイザは、ティックで計算されます)。
if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // 買い注文があったかどうか && ローソク足が下値で閉じたかどうか判断する
{
CheckForClose(); // 注文をクローズします。
OpenSell(); //売り 注文を出す
を返します。
}
どこを間違えているのか、アドバイスをお願いします。また、このギャップを埋めるようなリンクをいただけるとありがたいです。
dzhini:
私はこの原始的な方法でリバース・トレードをしようとしていますが、これはうまくいきません(Expert Advisorはティックで計算します)。
if(CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // 買い注文があったかどうか && ローソクがボトムレベルより下で閉じたかどうかをチェックします。
Time1とTime2の間に何分あるかは、どのように判断すればよいですか?
これはおそらく、すべての注文をカウントする関数です。これは、Buy であるべきです。
これは標準機能です。
int CalculateCurrentOrders(文字列シンボル)}
0を超えると買い 注文、0を下回ると売り注文 )))
Time1とTime2の間に何分あるかは、どのように判断すればよいですか?
の場合、その差は秒数で返される。
を60で割ると、分数になります。
extern double TP = 70; //takeprofit
extern double SL = 0; //stoploss
extern double Lot = 0.1;
double HighLevel;
double LowLevel;
int resBuy=0;
int resSell=0;
//+----------------------------------------------------------------+
//|エキスパート初期化関数|
//+--------------------------------------------------------+
int init()
{
HighLevel=High[1];
LowLevel=Low[1];
return;
} ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・。
//+------------------------------------------------------------------------+
//| expert function |
//+------------------------------------------------------------------------+
void start()
{
if(Bars<100 && IsTradeAllowed()==false) return;
if(resBuy==0 && resSell==0 && CheckBreak()==-1)
{
resSell=OrderSend(Symbol(,OP_SELL,Lot,Bid,2,0,Bid -TP,",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}
if(resBuy==0 && resSell==0 && CheckBreak()==-1)& CheckBreak()==1)
{
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}
if(resBuy!=0 && resSell==0 && Close[1]<LowLevel) //------------------------------------- この部分に興味があります:1つのバーでのクローズとオープニング
{
bool closeBuy=OrderClose(resBuy, Lot, Bid, 2, Blue);
// while(!IsTradeAllowed())Sleep(100);
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}
、(resSell!=0 && resBuy==0 && Close[1]>HighLevel) //------------------------------------- この部分に興味があります:1つのバーでのクローズとオープニング
{
bool closeSell=OrderClose(resSell, Lot, Ask, 0.0002, Red);
// while(!IsTradeAllowed())Sleep(100);
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}
//------------------------------------------------- チェック Low&...High break (Func)
double CheckBreak()
{
double candle=Open[1]-Close[1];
if(candle>0 && Low[1]<LowLevel) return(-1);
if(candle<0 && High[1]>HighLevel) return(1);
} }.
difference は秒数を返す。
を60で割ると、分数になります。
1971.03.04 12:00という日付が表示されるだけなのですが、これは変換する必要があるのでしょうか?
日付が出るだけなので、変換が必要なのでは?
まず、なぜ60倍なのですか?
2つ目-00:15のように分数を時間として表示したい場合。
は、60で割ったりかけたりする必要はありません。
まず、なぜ60倍なのですか?
2つ目 - 画面に分数を00:15のような時間として表示したい場合。
は、60で割ったりかけたりする必要はないのです。
はい、除算のために修正しましたが、年が1970.01.01 02:51と出てしまいます。
画面には必要ないので、その時間間隔の、日付のない分数を求めたいのですが...。
除算しなくても、日付が出力されるのですが、関数の元になる日付を減算すればいいのでしょうか?
単に分単位が欲しいだけなら、TimeToStrを 使う理由は全くありません。
Timeは通常のint型数値です。
または、TIME _MINUTE フラグ
のときのみ TimeToStr を使用します。