どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 801 1...794795796797798799800801802803804805806807808...1178 新しいコメント cJIecapb 2014.12.10 16:40 #8001 何が問題なのか理解できないのですが?int start() {bool i;int ticket;double Pricem;datetime Timen; string Symb=Symbol();ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);i=OrderSelect(0,SELECT_BY_POS);while(true){RefreshRates();Timen=OrderCloseTime(); if(Timen>0) { Pricem=OrderClosePrice(); Alert(Pricem); Alert("ордер закрылся"); Sleep(30000); } Sleep(10); }return; } 閉じるメッセージが表示されるはずです。注文が開き、ストップ高になり、クローズして終了です。どこにエラーがあるのか? Any rookie question, so Can anybody help me [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. Alexander 2014.12.11 06:57 #8002 MQL4ツールを使って、開いているチャートをすべて閉じるという作業を解決しています。異なる通貨ペアで3つのチャートを開いており、これがスクリプトのコードです。 for (int i=1;i<=3;i++) { long current=ChartID(); Print("итерация цикла: ",i,", идентификатор текущего графика ",current); bool result=ChartClose(current); if(result)Print("окно успешно закрыто"); else Print("не удалось закрыть окно с идентификатором: ", current); }スクリプトを実行すると、3つのチャートのうち1つだけが閉じられ、以下はログからのプリントです。AUDUSD,H1: итерация цикла: 1, идентификатор текущего графика 130627565403660021 AUDUSD,H1: окно успешно закрыто AUDUSD,H1: итерация цикла: 2, идентификатор текущего графика 130627565403660021 AUDUSD,H1: окно успешно закрыто AUDUSD,H1: итерация цикла: 3, идентификатор текущего графика 130627565403660021 AUDUSD,H1: окно успешно закрыто一方のチャートを閉じた後、現在のチャートはもう一方のチャートになるはずですが、という意味です。1.最初のチャートが閉じられた後、ChartID 関数は、現在の チャートの代わりに、 閉じられたチャートの 識別子を返します。2.C hartClose()関数を 2回、3回と繰り返すとtrueが返され、すでに閉じたウィンドウが正常に閉じられることを意味します...バグはどこにあるのか、どうすれば解決するのか、誰か知っていますか? Alexander 2014.12.11 07:08 #8003 CJIeCaPb:何が問題なのか理解できないのですが?閉じるメッセージが表示されるはずです。注文が開き、ストップ高になり、クローズして終了です。どこにエラーがあるのか?OrderSelect() はwhileループの中でないといけないと思いますし、しかも閉じた後のポジション番号が違ってくるので、この場合はチケットで選択した方が良いと思います。 cJIecapb 2014.12.11 08:11 #8004 tuner: OrderSelect()はwhileループの中にあるべきで、しかも閉じた後ではポジション番号が違ってくるので、この場合はチケットから選択した方が良いと思います。やったー、うまくいった! ありがとう 削除済み 2014.12.11 11:13 #8005 tuner:MQL4ツールを使って、開いているチャートをすべて閉じるという作業を解決しています。異なる通貨ペアで3つのチャートを開いており、これがスクリプトのコードです。スクリプトを実行すると、3つのチャートのうち1つだけが閉じられ、以下はログからのプリントです。一方のチャートを閉じた後、現在のチャートはもう一方のチャートになるはずですが、という意味です。1.最初のチャートが閉じられた後、ChartID 関数は、現在のチャートの代わりに、閉じられたチャートの識別子を返します。2.C hartClose()関数を 2回、3回と繰り返すとtrueが返され、すでに閉じたウィンドウが正常に閉じられることを意味します...バグはどこにあるのか、どうすれば解決するのか、誰か知っていますか?//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- long currChart,prevChart=ChartFirst(); int i=0,limit=100; while(i<limit) { currChart=ChartNext(prevChart); if(currChart<0) break; prevChart=currChart; ChartClose(currChart); i++; } ChartClose(ChartFirst()); } //+------------------------------------------------------------------+ Alexander 2014.12.11 11:55 #8006 pako さん、うまくいくときといかないときがあります、なぜでしょう...。エラーが発生するのですが。2014.12.11 17:52:12.456 Access violation read to 0x09295000 in 'C:\.ex4'.スクリプトが投げられたチャートを閉じようとして いるからではないでしょうか?PSは、左から1番目のチャートにスクリプトが添付されていれば正しく動作します。しかし、他のチャートに配置すると、エラーが発生します。 削除済み 2014.12.11 15:34 #8007 tuner:pako さん、うまくいくときといかないときがあります、なぜでしょう...。エラーが発生するのですが。2014.12.11 17:52:12.456 Access violation read to 0x09295000 in 'C:\.ex4'.スクリプトが投げられたチャートを閉じようとしているからではないでしょうか?PSは、左から1番目のチャートにスクリプトが添付されていれば正しく動作します。しかし、他のチャートに配置すると、エラーが発生します。//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- long currChart,prevChart=ChartFirst(); int i=0,limit=100; while(i<limit) { currChart=ChartNext(prevChart); if(currChart<0) break; ChartClose(currChart); prevChart=currChart; i++; } ChartClose(ChartFirst()); } //+------------------------------------------------------------------+ Roma Korobeynikov 2014.12.12 09:01 #8008 みんな、助けてくれ問題は、注文を損切りしないように変換する以下の関数で、円ペアに設定し、すべてのオープンオーダーを損切りしないようにすると、正しく動作しなくなる。5桁に設定しても0に戻ってしまうが、5桁に設定すれば問題なく動作するのが一番良い。このような作業の理由は何ですか? 何が正しい実行が行われたように、これらの関数を考慮する必要があり、私はそれを3または5桁を投げたどのウィンドウでEA操作に依存しない? ありがとうございました。 } //================================================================================================== // функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам //================================================================================================== if(_Simbol==false)//если false то по всем ордерам открытым { for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие { if(OrderType()==OP_BUY) //если тип бай { double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия { if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия {//модифицируем стоп лос bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE); if(!ord_modifik)//если не получилось Comment(GetLastError());//номер ошибки в угол } } } if(OrderType()==OP_SELL)//если тип селл { double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю { if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия {//модифицируем стоп лос bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE); if(!ord_modifik)//если не получилось Comment(GetLastError());//номер ошибки в угол } } } } } } Any rookie question, so [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you エキスパートアドバイザー - 雑多な質問 Alexander 2014.12.12 11:02 #8009 pako: コードありがとうございます!まだ時々エラーが出ますが、要点は理解できました。チャートIDを表示する機能を実験してみました。ドキュメントにあるChartFirst() とは何かは全く不明で、どうにでも解釈できます。左から順に最初に開いたチャートを意味するのか、開いているすべてのチャートから(時間的に)最初に開いたチャートを意味するのか、あるいはターミナルで最初に開いたチャート(今開いている可能性はほぼゼロなので閉じる意味はない)を意味するのか、です。この関数が、今開いているチャートのIDを返すのを見たことがないので、私は後者のバージョンに傾倒しています。 削除済み 2014.12.12 11:33 #8010 tuner:コードありがとうございます!まだ時々エラーが出ますが、要点は理解できました。チャートIDを表示する機能を実験してみました。ドキュメントにあるChartFirst() とは何か は全く不明で、どうにでも解釈できます。左から順に最初に開いたチャートを意味するのか、開いているすべてのチャートから(時間的に)最初に開いたチャートを意味するのか、あるいはターミナルで最初に開いたチャート(今開いている可能性はほぼゼロなので閉じる意味はない)を意味するのか、です。この関数が現在開いているチャートのIDを返すのを見たことがないので、私は後者のバージョンに傾倒しています。チャートファーストクライアント端末の最初のチャ ートのチャート ID を返します。一番左のグラフと理解しています 1...794795796797798799800801802803804805806807808...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
何が問題なのか理解できないのですが?
int start()
{
bool i;
int ticket;
double Pricem;
datetime Timen;
string Symb=Symbol();
ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);
i=OrderSelect(0,SELECT_BY_POS);
while(true)
{
RefreshRates();
Timen=OrderCloseTime();
if(Timen>0)
{
Pricem=OrderClosePrice();
Alert(Pricem);
Alert("ордер закрылся");
Sleep(30000);
}
Sleep(10);
}
return;
}
MQL4ツールを使って、開いているチャートをすべて閉じるという作業を解決しています。異なる通貨ペアで3つのチャートを開いており、これがスクリプトのコードです。
スクリプトを実行すると、3つのチャートのうち1つだけが閉じられ、以下はログからのプリントです。
一方のチャートを閉じた後、現在のチャートはもう一方のチャートになるはずですが、という意味です。
1.最初のチャートが閉じられた後、ChartID 関数は、現在の チャートの代わりに、 閉じられたチャートの 識別子を返します。
2.C hartClose()関数を 2回、3回と繰り返すとtrueが返され、すでに閉じたウィンドウが正常に閉じられることを意味します...
バグはどこにあるのか、どうすれば解決するのか、誰か知っていますか?
何が問題なのか理解できないのですが?
閉じるメッセージが表示されるはずです。注文が開き、ストップ高になり、クローズして終了です。どこにエラーがあるのか?
OrderSelect()はwhileループの中にあるべきで、しかも閉じた後ではポジション番号が違ってくるので、この場合はチケットから選択した方が良いと思います。
MQL4ツールを使って、開いているチャートをすべて閉じるという作業を解決しています。異なる通貨ペアで3つのチャートを開いており、これがスクリプトのコードです。
スクリプトを実行すると、3つのチャートのうち1つだけが閉じられ、以下はログからのプリントです。
一方のチャートを閉じた後、現在のチャートはもう一方のチャートになるはずですが、という意味です。
1.最初のチャートが閉じられた後、ChartID 関数は、現在のチャートの代わりに、閉じられたチャートの識別子を返します。
2.C hartClose()関数を 2回、3回と繰り返すとtrueが返され、すでに閉じたウィンドウが正常に閉じられることを意味します...
バグはどこにあるのか、どうすれば解決するのか、誰か知っていますか?
pako さん、うまくいくときといかないときがあります、なぜでしょう...。エラーが発生するのですが。
2014.12.11 17:52:12.456 Access violation read to 0x09295000 in 'C:\.ex4'.
スクリプトが投げられたチャートを閉じようとして いるからではないでしょうか?
PSは、左から1番目のチャートにスクリプトが添付されていれば正しく動作します。しかし、他のチャートに配置すると、エラーが発生します。
pako さん、うまくいくときといかないときがあります、なぜでしょう...。エラーが発生するのですが。
2014.12.11 17:52:12.456 Access violation read to 0x09295000 in 'C:\.ex4'.
スクリプトが投げられたチャートを閉じようとしているからではないでしょうか?
PSは、左から1番目のチャートにスクリプトが添付されていれば正しく動作します。しかし、他のチャートに配置すると、エラーが発生します。
みんな、助けてくれ
問題は、注文を損切りしないように変換する以下の関数で、円ペアに設定し、すべてのオープンオーダーを損切りしないようにすると、正しく動作しなくなる。
5桁に設定しても0に戻ってしまうが、5桁に設定すれば問題なく動作するのが一番良い。
このような作業の理由は何ですか? 何が正しい実行が行われたように、これらの関数を考慮する必要があり、私はそれを3または5桁を投げたどのウィンドウでEA操作に依存しない?
ありがとうございました。
}
//==================================================================================================
// функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам
//==================================================================================================
if(_Simbol==false)//если false то по всем ордерам открытым
{
for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие
{
if(OrderType()==OP_BUY) //если тип бай
{
double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия
{
if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
if(OrderType()==OP_SELL)//если тип селл
{
double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю
{
if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
}
}
}
コードありがとうございます!まだ時々エラーが出ますが、要点は理解できました。
チャートIDを表示する機能を実験してみました。ドキュメントにあるChartFirst() とは何かは全く不明で、どうにでも解釈できます。左から順に最初に開いたチャートを意味するのか、開いているすべてのチャートから(時間的に)最初に開いたチャートを意味するのか、あるいはターミナルで最初に開いたチャート(今開いている可能性はほぼゼロなので閉じる意味はない)を意味するのか、です。この関数が、今開いているチャートのIDを返すのを見たことがないので、私は後者のバージョンに傾倒しています。
コードありがとうございます!まだ時々エラーが出ますが、要点は理解できました。
チャートIDを表示する機能を実験してみました。ドキュメントにあるChartFirst() とは何か は全く不明で、どうにでも解釈できます。左から順に最初に開いたチャートを意味するのか、開いているすべてのチャートから(時間的に)最初に開いたチャートを意味するのか、あるいはターミナルで最初に開いたチャート(今開いている可能性はほぼゼロなので閉じる意味はない)を意味するのか、です。この関数が現在開いているチャートのIDを返すのを見たことがないので、私は後者のバージョンに傾倒しています。
チャートファースト
クライアント端末の最初のチャ ートのチャート ID を返します。
一番左のグラフと理解しています