#property indicator_chart_windowbool First = true;
int start(){
if(First){
int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефактыAlert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
First = false;
}
if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значениеAlert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);
indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем егоAlert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
}
return(0);
}
//+-------------------------------------------------------------------------------------+//| Поиск своих ордеров |//+-------------------------------------------------------------------------------------+void FindOrders(int& t, int& p)
{
int total = OrdersTotal() - 1;
t = 0;
p = 0;
for (int i=total; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderType() > 1)
{
p++;
}
t++;
pr ("FindOrders(): " + "t = " + t + " " + TimeToStr(TimeCurrent()));
pr ("FindOrders(): " + "p = " + p + " " + TimeToStr(TimeCurrent()));
}
}
私は最初からそう呼んでいます。
int start()
{
if (g_lastBarTime == Time[0]) // На текущем баре все необходимые действия..return (0); // ..уже были выполненыint oTotal = 0, oPending = 0;
FindOrders(oTotal, oPending);
int signal = GetGeneralSignal(oTotal);
if (signal != SIGNAL_NO)
{
if (!Trade(signal))
return(0);
}
else
皆さん、こんばんは。最近、MQL4をマスターすることにしました(Sergey Kovalevのチュートリアルを勉強しています)。今日は練習がてら、簡単な注文受付スクリプトを作ってみることにしました。コードは以下の通りです: int start() { OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point); Alert(GetLastError()); 。
を返します。
}
スクリプトは動作せず、エラー4109(Trading not allowed)が表示されました。状況を変えようとすると、エラー4016(Uninitialised array)も表示されました。これらのエラーの原因と、結局のところ簡単な取引開始スクリプトの作り方を知りたいのです。チュートリアル https://book.mql4.com/ru/trading/ordersend の例をコピーしただけですが(その中に関数 GetLastError を追加しただけです)、とにかくエラー 4109 が発生しました。
intstart()// Спец. функция start(){// Открытие BUYOrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
return; // Выход из start()}
Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
メタ引用符でそのような柵をどう扱うか教えてください)。
メッセージを傍受する必要がある。
すでに実行されている場合は、キューから削除されている。
OK、次の質問があります。
- 最初のindexFirstLeftOnChartが0であることが判明したため、ティック ごとにビープ音が鳴る。どうすれば戦えるのか?ビルド509です。
すでに実行されたメッセージは、キューから削除されています。
通常は実行前にインターセプトされる。そうでなければ、何のために傍受する必要があるのか理解できません。
実行の前に疑問はない。したがって、AccountNumber()の有効性チェックをDLLに移す意味はない。これは、アカウント番号がすでにdllに保存されていることを意味します。
単純な点では何かある、頭が痛い。注文を検索する機能があります。
t - すべてのオーダーのカウンタ.
p - 保留注文のカウンタです。
私は最初からそう呼んでいます。
実際に開いてみると、注文がないときでもこのように表示されます(注文がないときでも、あるかのように印刷される...)。
なぜ、そんなことが可能なのか?
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
。
を返します。
}
スクリプトは動作せず、エラー4109(Trading not allowed)が表示されました。状況を変えようとすると、エラー4016(Uninitialised array)も表示されました。これらのエラーの原因と、結局のところ簡単な取引開始スクリプトの作り方を知りたいのです。チュートリアル https://book.mql4.com/ru/trading/ordersend の例をコピーしただけですが(その中に関数 GetLastError を追加しただけです)、とにかくエラー 4109 が発生しました。