Symbol - initialization expected C:\Program Files, FinamMetaTrader, Filter1.mq4 (8, 13)
externdouble lot=0.1;
externdouble tp=0;
externdouble sl=0;
int Real_Order=-1; // Пока рыночных нетstring Symb=Symbol; // Финанс. инструментint start() // Спец. функция start()
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Bid-sl*Point,Ask+tp*Point);
if(IsDemo()) PlaySound("alert.wav");
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,..
{ //отражённым в терминалеif(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
{
//-------------------------------------------------------------- if (OrderSymbol()!= Symb) continue; // Не наш фин.инструм.int Tip=OrderType(); // Тип ордераif (Real_Order>1) continue; //отложник ордер //------------------------------------------------------ 4 --double Price=OrderOpenPrice(); // Цена ордераifNormalizeDouble(tp,sl,Digits) // Выбор самого близкого орд
{
Real_Order=Tip; // Есть рыночный ордерint Ticket=OrderTicket(); // Номер ордераdouble Lot=OrderLots(); // Количество лотов
}
} //Конец анализа ордера
} //Конец перебора орд.//---------------------------------------------------------------------+while(true) // Цикл закрытия орд.
{
if (Real_Order==-1) // Если рыночных нет
{
Alert("По ",Symb," рыночных ордеров нет");
break; // Выход из цикла закр
}
//--------------------------------------------------------- 7 --switch(Real_Order) // По типу ордера
{
case0: double Price_Cls=Bid; // Ордер Buystring Text="Buy "; // Текст для Buybreak; // Из switchcase1: Price_Cls=Ask; // Ордер Sell
Text="Sell "; // Текст для Sell
}
Alert("Попытка закрыть ",Text," ",Ticket,". Ожидание ответа..");
bool Ans=OrderClose(Ticket,Lot,Price_Cls,2);// Закрытие ордера//--------------------------------------------------------- 8 --if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер ",Text," ",Ticket);
break; // Выход из цикла закр
}
//--------------------------------------------------------- 9 --int Error=GetLastError(); // Не получилось :(switch(Error) // Преодолимые ошибки
{
case135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данныеcontinue; // На след. итерациюcase136:Alert("Нет цен. Ждём новый тик..");
while(RefreshRates()==false) // До нового тикаSleep(1); // Задержка в циклеcontinue; // На след. итерациюcase146:Alert("Подсистема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решениеRefreshRates(); // Обновим данныеcontinue; // На след. итерацию
}
switch(Error) // Критические ошибки
{
case2 : Alert("Общая ошибка.");
break; // Выход из switchcase5 : Alert("Старая версия клиентского терминала.");
break; // Выход из switchcase64: Alert("Счет заблокирован.");
break; // Выход из switchcase133:Alert("Торговля запрещена");
break; // Выход из switchdefault: Alert("Возникла ошибка ",Error);//Другие варианты
}
break; // Выход из цикла закр
}
return; // Выход из start()
}
こんにちは。Help for Dummies: 直前のローソク足の最小値と最大 値に 保留注文を 出すことができるEAがあるのですが、どうすればいいですか? キャンドルの方向へ開く。
ニーズがある。
- 買い保留から売り保留に変更すること。
- 前日の最小値と最大値ではなく、直前のローソク足の最小値と最大 値にする
- 注文、ロットパラメーター、ストップロス、マジックナンバーの 削除など、他はそのままに。
私のすべてのアクションは、テスターでエラー130を引き起こすか、まったくコンパイルされないかのどちらかです。何かアドバイスがあれば、よろしくお願いします。
以下は、私が介入していない状態での動作コードです。
extern double Lot = 0.01;
extern int StopLoss = 0;
extern int TakeProfit = 0;
extern int Magic = 618;
int Up_bars = 0;
int Down_bars = 0;
double StopLoss_new = 0;
double TakeProfit_new = 0;
//+------------------------------------------------------------------------+
//| エキスパート初期化関数 |
//+------------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}.
//+------------------------------------------------------------------------+
//| エキスパートの初期化関数 |
//+--------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}.
//+------------------------------------------------------------------------------+
//|エキスパートスタート関数 |
//+------------------------------------------------------------------------------+
int start()
{
//-----
for( int cnt=0;cnt<OrdersTotal();cnt++)
{
if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)>0)
{
if (
(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderComment() != DoubleToStr(Bars,0)
)
{
Comment("okkk");
OrderDelete(OrderTicket());
}.
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Up_bars != Bars)
{
if (High[1]-Ask >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(High[1]-StopLoss*Point,Digits);
if (TakeProfit_new !=0) StopLoss_new = NormalizeCountry(High[1]-StopLoss*Point,Digits), { if (StopLoss_new !=0), { if (StopLoss_new != 0) TakeProfit_new = NormalizeDouble(High[1]+TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(High[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}.
else
{
Up_bars = Bars;
}
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Down_bars != Bars)
{
if (Bid-Low[1] >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(Low[1]+StopLoss*Point,Digits);
if (TakeProfit_new != 0) if (StopLoss_new +StopLoss*Point,Digits)= 0) TakeProfit_new = NormalizeDouble(Low[1]-TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Low[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}.
else
{
Down_bars = Bars;
}
}
}
//----
return(0);
}.
//+------------------------------------------------------------------+
こんにちは。ダミーがこれを理解するのを助ける。
オブライト警部...まだ、誰かヒントをください。
ヒントをあげます。その表現を言葉にしてみてください。そして、間違った入れ方をしていることがわかります。
PS.
どこを見ればエラーが出るのかが一目瞭然なら、なぜ聞くのか?
エラー130の 場合。ストップ&テイクアウトを再考する。
注文は高値からorderopenpriceまでの距離の4倍でクローズするようにお願いします。
どこで失敗したのか?
すべての注文は、開始後3ピップ以内に終了します。
計算式の結果を計算してみましたか?そうでないなら、やってくれ、デタラメが出るから。すべての条件を把握しているわけではないからかもしれません。
1つだけエラーが出たが、修正方法がわからない。どこが問題なのか?
'Symbol' - initialization expected C:\Program Files, FinametaTrader Filter1.mq4 (8, 13)
Symbol - initialization expected C:\Program Files, FinamMetaTrader, Filter1.mq4 (8, 13)
alex12 のように、具体的に指定してください。
1つだけエラーが出たが、修正方法がわからない。どこが問題なのか?
'Symbol' - initialization expected C:\Program Files, FinametaTrader Filter1.mq4 (8, 13)
Symbol - initialization expected C:\Program Files, FinamMetaTrader, Filter1.mq4 (8, 13)
持っていますね。
必要です。
実際、エラーメッセージを ダブルクリックすると、カーソルはコンパイルエラーの発生した指定された(ところで)場所、つまりここに移動します。(8, 13)その後、他のエラーが発生する...。:)
上の行をstart()関数の先頭に移動させる
まずはそこから、他のエラーに対処していく...。
皆さん、こんにちは。
みんな、助けが必要なんだ。状況を説明する。
現在の価格は1.4100(例)私は1.4090から1.4110まで(1.4100からプラスまたはマイナス10pt)内に開かれているバーを見つける必要がある - これはOKです。
例えば、プログラムは1.4105で開いているバーを見つけて、私に合うようにしました。
そして、プログラムはこのバーとその左右のバーを比較し、低ければ適当になるはずです。
アーテム ここでコツがあるのは、下にこんな線があることです。
ですから、あなたが提案した方法はあまり意味がありません。もし私がalex12の 要望を正しく理解していればですが。