//+----------------------------------------------------------------------------------------------------------------------------------------+ //| Check to see if any order open on this currency pair |//+----------------------------------------------------------------------------------------------------------------------------------------+ int OpenOrdersThisPair(string pair)
{
int total=0;
for(int i=OrdersTotal()-1; i >= 0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==pair) total++;
}
return (total);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
double ticksize = MarketInfo(Symbol(), MODE_TICKSIZE);
if (ticksize == 0.00001 || ticksize == 0.001) // if you set this to 0 it WONT throw an order out straight away.
pips = ticksize*10;
else pips = ticksize;
return(0);
}
//TriggerBarTime works in conjunction with:int iTBT= iBarShift(NULL,60, TriggerBarTime, true),
iHH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0);
double buyPrice = High[iHH]+PadAmount*pips;
//I then use this "buyPrice" in conjunction with OrderSend for where the price of the entry order is...
ああ、すみません - 私はもはやどんなエラーも得ることはありません。買い注文が通るだけで売り注文は出ません...。
それはMAクロスオーバーに関する私の前のスレッドに関連しています - 私はまだそれを得ることができません!しかし、私は誰も巻き込みたくないし、人々が私に答えを与えている間、死んだ馬を打つ(私は答えを理解していないが(笑))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!。RaptorUKさん、ありがとうございました。
他の人のことは言えませんが、私は巻き込まれるつもりはありません.
エラーもなく、売り注文も 出されていないのなら、OpenOrdersThisPair(Symbol())は0にはならないでしょう、その関数はどんな型ですか? intですかdoubleですかboolですか?
移動平均の クロスが起こったところに単純に注文が入るのではなく、違うところに注文が入っているからだと思うのですが、いかがでしょうか?
これが問題なのは分かっているんです!以前、別のトピックでこの件について質問したことがあるのですが、この質問に答えていただけると本当にありがたいです。もちろん、不必要な書き方もしていますが......それは無視してください......)
Q.1)「ダブルトリガービートタイム」の行と>>の部分についてですが...。私が理解したいのは、この関数に、すべての移動平均が前に比較した移動平均より大きくなったときを見つけ出し、それらが正しい順序で残っていることを確認するのを忘れるように指示する方法だけです...。もしそうなら、他のIF文に続いて "OrderEntry(0) "を介してロングオーダーを出すことができます。もしそうでなければ、ロング(i1>i2 && i2>i3・・・)ラインを見て、次のラインを考える前にこれが再び真となるのを待つ必要があるのです・・・。
答えは目の前にあるのですが、ちょっとイライラしてきたので、このちょっとしたナゲットに本当に感謝しています。ありがとうございました。
私は、すべてのMAがどこにあるのかを知りたいと思っていますが、それらは常に真実である必要はありません...。私はただ、他の何よりも先にそれが真実であって欲しいのです...。これが真実であると仮定すると、この価格から起こる必要があるのは、60EMAの下にどのバーも終わらずに(ロングの場合)ロングポジションが押し出され、有効であることです。
私はTriggerBarTimeを使って、すべての移動平均線が 正しい順序で積み重なった最高値と、21本EMAにタッチして進むバーを見つけています...。
というわけで、インデントを直していただいたのですが、これは私が以前書いたこととほぼ同じです(何か見落としていなければ)。
(そうそう、boolにすべきなのは分かっているのですが、単に遊んでいて、元に戻すのを忘れていました。)
double TriggerBarTime = (i1>i2 ..
真か偽か 0か1か それ以外か iBarShiftの第3引数はdatetimeでなければなりません。iBarShift(0) または (1)は常にBars-1になります。datetime TriggerBarTime;
グローバルセクションにあるのですが・・・。前の投稿が理解できないのですが?^
あなたの上の投稿に関連して、If行をどのように書くか提案することは可能ですか?