[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 268 1...261262263264265266267268269270271272273274275...537 新しいコメント 削除済み 2011.03.21 20:29 #2671 extern string AlliesO1 = "GBPUSD"; - валюта string AlliesO[5]; - массив в котором хранятся валюты. Так я проверяю нужно ли добавлять валюту в массив. (Изначально вместо валют нули, всего валют 5) if (StringLen (AlliesO1)>2) { CountAlliesO++; AlliesO [0] = AlliesO1; } Потом в цикле перебираю валюты и на каждой валюте открываю ордер. for (int i=0;i<CountAlliesO;i++) { l_ticket_4 = OrderSend(AlliesO[i], OP_BUY, Lots, NormalizeDouble(Ask, Digits), l_slippage_8, iif(StopLoss == 0.0, 0, NormalizeDouble(Ask - StopLoss / MathPow(10, Digits), Digits)), iif(TakeProfit == 0.0, 0, NormalizeDouble(Ask + TakeProfit / MathPow(10, Digits), Digits)), 0, Magic, 0, CLR_NONE); Print ("Ticket " + Allies[i] + ": " + l_ticket_4); } これが出力されるのです。 22:05:25 RSI_Valut_Test2 EURUSD,H1: CountAlliesO: 2 22:05:25 RSI_Valut_Test2 EURUSD,H1: CountEnemyO: 2 22:05:25 RSI_Valut_Test2 EURUSD,H1: Allies: GBPUSD // - ループ内でAlliesO[i]をプリント。 22:05:25 RSI_Valut_Test2 EURUSD,H1: 味方: GBPUSD 22:05:25 RSI_Valut_Test2 EURUSD,H1: 敵:USDCHF 22:05:25 RSI_Valut_Test2 EURUSD,H1: 敵:USDCHF 22:05:25 RSI_Valut_Test2 EURUSD,H1: チケット USDCHF: -1 22:05:25 RSI_Valut_Test2:OrderSend 関数の シンボル名は文字列でなければなりません。 まあ、一般的にはそうなんですが、配布しないでくださいということで、すべてのコードをお渡しすることはできませんが......。さて、これらのデータを出力するプリンターが2台ほど投入されましたが...。文字列として宣言されているのに、なぜ文字列でないと言われるのでしょうか? 助けてください、よろしくお願いします。 [Archive!] Any rookie question, コーディングのヘルプ changing extern input setting 削除済み 2011.03.21 20:31 #2672 皆さん、こんばんは。数本のバーが開かれた後に注文を閉じるための適切な関数を書く方法と、この数を最適化する方法をアドバイスしてください。 削除済み 2011.03.21 20:50 #2673 CountBars -バーの数 です。 チケット - 注文番号です。 CloseAfterSomeBar (int CountBars, int Ticket) { OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES) datetime date = OrderOpenTime(); int BarShift = iBarShift (Symbol(), 0, date, false); if (CountBars>=BarShift) { if (OrderType() = OP_BUY) OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE); else OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE); } } オフセットの計算方法がよくわからないので、バーの数についてはよくわからないが、-1かもしれないし、+1かもしれない。まあ、M1で確認するのは難しいことではありませんが... そんな感じなんですか? [Archive!] Any rookie question, コーディングのヘルプ [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 削除済み 2011.03.21 20:56 #2674 PODLIY16: CountBars - バーの数です。 チケット - 注文番号です。 CloseAfterSomeBar (int CountBars, int Ticket) { OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES) datetime date = OrderOpenTime(); int BarShift = iBarShift (Symbol(), 0, date, false); if (CountBars>=BarShift) { if (OrderType() = OP_BUY) OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE); else OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE); } } オフセットの計算方法がよくわからないので、バーの数についてはよくわからないが、-1かもしれないし、+1かもしれない。まあ、M1で確認するのは難しいことではないのですが...。 これで終わり? 削除済み 2011.03.21 20:59 #2675 isaev-av: そうですね、私はプログラマーではありません。 今からやってみます。 メインはTFで動作させることです。 削除済み 2011.03.21 21:12 #2676 void CloseAfterSomeBar (int CountBars, int Ticket) { OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES); datetime date = OrderOpenTime(); int BarShift = iBarShift (Symbol(), 0, date, false); if (BarShift>=CountBars) { if (OrderType() == OP_BUY) OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE); else OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE); } } これは正しいです、正しいバーが開くとすぐに注文を閉じます、例えば今試したM1では、注文は9分目に開き、11時1分に閉じました。 Григорий 2011.03.21 21:15 #2677 RSIやストキャスティックの指標にMAを重ねる方法、つまりチャートからではなく指標からMAを取り出す方法を教えてください。 削除済み 2011.03.21 21:17 #2678 うまくいかない。もしかしたら、誰かが訂正してくれるかもしれません。皆さん、こんばんは。数本のバーが開かれた後に注文を閉じるための適切な関数を書く方法と、この数を最適化する方法をアドバイスしてください。 ファイル: movingmaverage.mq4 5 kb 削除済み 2011.03.21 21:29 #2679 2つの新しい変数で試してみてください。 extern bool IfTrueThenCountBarWork = false; // - falseの場合、この関数は動作しません、動作するために、trueを設定する必要があります。 extern inttern CountBar = 0; // - クローズするまでのバー数。以上、バーの数え方について説明しました。 何かお役に立てたのなら幸いです。 ファイル: movingmaverage_1.mq4 6 kb 削除済み 2011.03.21 21:31 #2680 PODLIY16: 2つの新しい変数で試してみてください。 extern bool IfTrueThenCountBarWork = false; // - falseを設定すると、この関数は動作しませんので、動作させるにはtrueを設定する必要があります。 extern int CountBar = 0; // - クローズするまでのバー数。バーの数え方、上に書きました。 少しでもお役に立てたのなら幸いです。 ありがとうございました。 1...261262263264265266267268269270271272273274275...537 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
extern string AlliesO1 = "GBPUSD"; - валюта
string AlliesO[5]; - массив в котором хранятся валюты.
Так я проверяю нужно ли добавлять валюту в массив. (Изначально вместо валют нули, всего валют 5)
if (StringLen (AlliesO1)>2)
{
CountAlliesO++;
AlliesO [0] = AlliesO1;
}
Потом в цикле перебираю валюты и на каждой валюте открываю ордер.
for (int i=0;i<CountAlliesO;i++)
{
l_ticket_4 = OrderSend(AlliesO[i], OP_BUY, Lots, NormalizeDouble(Ask, Digits), l_slippage_8, iif(StopLoss == 0.0, 0, NormalizeDouble(Ask - StopLoss / MathPow(10, Digits), Digits)), iif(TakeProfit == 0.0, 0, NormalizeDouble(Ask +
TakeProfit / MathPow(10, Digits), Digits)), 0, Magic, 0, CLR_NONE);
Print ("Ticket " + Allies[i] + ": " + l_ticket_4);
}
これが出力されるのです。
22:05:25 RSI_Valut_Test2 EURUSD,H1: CountAlliesO: 222:05:25 RSI_Valut_Test2 EURUSD,H1: CountEnemyO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: Allies: GBPUSD // - ループ内でAlliesO[i]をプリント。
22:05:25 RSI_Valut_Test2 EURUSD,H1: 味方: GBPUSD
22:05:25 RSI_Valut_Test2 EURUSD,H1: 敵:USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: 敵:USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: チケット USDCHF: -1
22:05:25 RSI_Valut_Test2:OrderSend 関数の シンボル名は文字列でなければなりません。
まあ、一般的にはそうなんですが、配布しないでくださいということで、すべてのコードをお渡しすることはできませんが......。さて、これらのデータを出力するプリンターが2台ほど投入されましたが...。文字列として宣言されているのに、なぜ文字列でないと言われるのでしょうか?
助けてください、よろしくお願いします。
皆さん、こんばんは。数本のバーが開かれた後に注文を閉じるための適切な関数を書く方法と、この数を最適化する方法をアドバイスしてください。
CountBars -バーの数 です。
チケット - 注文番号です。
CloseAfterSomeBar (int CountBars, int Ticket)
{OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}
オフセットの計算方法がよくわからないので、バーの数についてはよくわからないが、-1かもしれないし、+1かもしれない。まあ、M1で確認するのは難しいことではありませんが...
そんな感じなんですか?
CountBars - バーの数です。
チケット - 注文番号です。
CloseAfterSomeBar (int CountBars, int Ticket)
{OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}
オフセットの計算方法がよくわからないので、バーの数についてはよくわからないが、-1かもしれないし、+1かもしれない。まあ、M1で確認するのは難しいことではないのですが...。
これで終わり?
そうですね、私はプログラマーではありません。 今からやってみます。 メインはTFで動作させることです。
{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES);
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (BarShift>=CountBars)
{
if (OrderType() == OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}
これは正しいです、正しいバーが開くとすぐに注文を閉じます、例えば今試したM1では、注文は9分目に開き、11時1分に閉じました。
2つの新しい変数で試してみてください。
extern bool IfTrueThenCountBarWork = false; // - falseの場合、この関数は動作しません、動作するために、trueを設定する必要があります。
extern inttern CountBar = 0; // - クローズするまでのバー数。以上、バーの数え方について説明しました。
何かお役に立てたのなら幸いです。
2つの新しい変数で試してみてください。
extern bool IfTrueThenCountBarWork = false; // - falseを設定すると、この関数は動作しませんので、動作させるにはtrueを設定する必要があります。
extern int CountBar = 0; // - クローズするまでのバー数。バーの数え方、上に書きました。
少しでもお役に立てたのなら幸いです。
ありがとうございました。