初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 723 1...716717718719720721722723724725726727728729730...1503 新しいコメント 削除済み 2017.01.24 06:21 #7221 なぜiRSI,iCCIという 2つの指標を使うのか、何が間違っているのか教えてください。インジケータは問題ないが、ミューイングとBBは警告が出る(タイプ変換によるデータ消失の可能性 インジケータは問題ない。mqh )//+------------------------------------------------------------------+//| Indicator.mqh |//| Copyright 2017, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2017, MetaQuotes Software Corp."#property link "https://www.mql5.com"// интерфейс к индикаторам. class CIndicators{public: double iRSI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift); double iCCI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift); double iBands(string symbol,ENUM_TIMEFRAMES tf,int BBPeriod,int shift,double BBDeviation,ENUM_APPLIED_PRICE BBPrice ); double iMA(string symbol,ENUM_TIMEFRAMES tf, int nMAPeriod,int shift, ENUM_MA_METHOD eMAMethod ,ENUM_APPLIED_PRICE MAPrice); };// -Создадим экземпляр индикатора iRSIdouble CIndicators::iRSI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift){//--- int hRSI = iRSI(symbol, tf, period, applied); if(hRSI == INVALID_HANDLE) return 0.0; double rsi[]; CopyBuffer(hRSI, 0, shift, 1, rsi); if(ArraySize(rsi)) return rsi[0]; return 0.0;//--Создадим экземпляр индикатора iCCI}//----------------------------------double CIndicators::iCCI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift){ int hCCI = iCCI(Symbol(), PERIOD_CURRENT, 55, PRICE_CLOSE); if(hCCI == INVALID_HANDLE)return 0.0; double cci[]; ArrayResize(cci, 1); CopyBuffer(hCCI, 0, 0, 1, cci); return cci[0];}//--------------------------------------------------// Создадим экземпляр индикатора ВВdouble CIndicators::iBands(string symbol,ENUM_TIMEFRAMES tf,int BBPeriod,int shift,double BBDeviation,ENUM_APPLIED_PRICE BBPrice){ int hBands = iBands(Symbol(),tf,BBPeriod,0,BBDeviation,PRICE_CLOSE); if(hBands==INVALID_HANDLE)return 0.0; // Создадим массив значений верхней границы ВВ double fBBUpper[]; ArrayResize(fBBUpper,true); CopyBuffer(hBands,UPPER_BAND,0,3,fBBUpper); return fBBUpper[0]; // Создадим массив значений нижней границы ВВ double fBBLower[]; ArraySetAsSeries(fBBLower,true); CopyBuffer(hBands,LOWER_BAND,0,3,fBBLower); return fBBLower[0]; } // Создадим экземпляр индикатора МА double CIndicators::iMA(string symbol,ENUM_TIMEFRAMES tf, int nMAPeriod,int shift, ENUM_MA_METHOD eMAMethod ,ENUM_APPLIED_PRICE MAPrice){// получим его хэндл int hMA=iMA(Symbol(), PERIOD_CURRENT, nMAPeriod,0,MODE_EMA,PRICE_CLOSE); if(hMA == INVALID_HANDLE)return 0.0;// Создадим массив значений МА,заполним тремя последними значениями мувинга. double fMA[]; ArraySetAsSeries(fMA,true); CopyBuffer(hMA,0,0,3,fMA); return fMA[0];} Questions from Beginners MQL5 インジケータを無償で作成します Indicators with alerts/signal 削除済み 2017.01.24 08:07 #7222 10030のエラーは、Expert Advisorのコードが何の問題もなく動作した前の年、そして今、私は再びMQL5の変更を読む/検索するようになり、私は取引要求の 何を変更する必要があります。 // функция открытия позиции с рынкаbool MarketOrder(const string sSymbol, const ENUM_POSITION_TYPE eType, const double fLot, const int nSL = 0, const int nTP = 0, const ulong nMagic = 0, const uint nSlippage = 1000){ bool bRetVal = false; // запрос MqlTradeRequest oRequest = {0}; MqlTradeResult oResult = {0}; double fPoint = SymbolInfoDouble(sSymbol, SYMBOL_POINT); int nDigits = (int) SymbolInfoInteger(sSymbol, SYMBOL_DIGITS); oRequest.action = TRADE_ACTION_DEAL; oRequest.symbol = sSymbol; oRequest.volume = fLot; oRequest.stoplimit = 0; oRequest.deviation = nSlippage; if(eType == POSITION_TYPE_BUY) { oRequest.type = ORDER_TYPE_BUY; oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_ASK), nDigits); oRequest.sl = NormalizeDouble(oRequest.price - nSL * fPoint, nDigits) * (nSL > 0); oRequest.tp = NormalizeDouble(oRequest.price + nTP * fPoint, nDigits) * (nTP > 0); } if(eType == POSITION_TYPE_SELL) { oRequest.type = ORDER_TYPE_SELL; oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_BID), nDigits); oRequest.sl = NormalizeDouble(oRequest.price + nSL * fPoint, nDigits) * (nSL > 0); oRequest.tp = NormalizeDouble(oRequest.price - nTP * fPoint, nDigits) * (nTP > 0); } // определим допустимый тип заливки ордера (зависит от типа исполнения - Instant, Market, биржевое и т.д.) switch((int) SymbolInfoInteger(sSymbol, SYMBOL_FILLING_MODE)) { case SYMBOL_FILLING_FOK: oRequest.type_filling = ORDER_FILLING_FOK; break; case SYMBOL_FILLING_IOC: oRequest.type_filling = ORDER_FILLING_IOC; break; default: oRequest.type_filling = ORDER_FILLING_RETURN; } oRequest.magic = nMagic; // проверка перед отправкой MqlTradeCheckResult oCheckResult= {0}; bool bCheck = OrderCheck(oRequest, oCheckResult); Print("Проверка заявки MarketOrder:", " OrderCheck = ", bCheck, ", retcode = ", oCheckResult.retcode, ", balance = ", NormalizeDouble(oCheckResult.balance, 2), ", equity = ", NormalizeDouble(oCheckResult.equity, 2), ", margin = ", NormalizeDouble(oCheckResult.margin, 2), ", margin_free = ", NormalizeDouble(oCheckResult.margin_free, 2), ", margin_level = ", NormalizeDouble(oCheckResult.margin_level, 2), ", comment = ", oCheckResult.comment); // если проверка удачная - отправка заявки if(bCheck == true && oCheckResult.retcode == 0) { bool bResult = false; // 3 попытки выставления ордера for(int k = 0; k < 3; k++) { bResult = OrderSend(oRequest, oResult); if(bResult == true && oResult.retcode == TRADE_RETCODE_DONE) break; if(k == 2) break; Sleep(100); } Print("Отправка заявки:", " OrderSend = ", bResult, ", retcode = ", oResult.retcode, ", deal = ", oResult.deal, ", order = ", oResult.order, ", volume = ", NormalizeDouble(oResult.volume, 2), ", price = ", NormalizeDouble(oResult.price, _Digits), ", bid = ", NormalizeDouble(oResult.bid, _Digits), ", ask = ", NormalizeDouble(oResult.ask, _Digits), ", comment = ", oResult.comment, ", request_id = ",oResult.request_id); if(oResult.retcode == TRADE_RETCODE_DONE) bRetVal = true; } else if(oResult.retcode == TRADE_RETCODE_NO_MONEY) { Print("Недостаточно денег для открытия позиции. Работа эксперта прекращена."); ExpertRemove(); } return(bRetVal);} Questions from Beginners MQL5 成行注文を正しく発注するにはどうしたらよいですか? 特定のブローカーのライブ口座における複数注文入力の問題 Alexey Viktorov 2017.01.24 09:51 #7223 Alexander Antoshkin:そして、私はまた尋ねたいと思いました:取引要求で 何を変更すべきか、エラー10030があります、以前はExpert Advisorコードは問題なく動作していましたが、今はMQL5で変更を読む/検索することを再び強制されます。 // функция открытия позиции с рынкаbool MarketOrder(const string sSymbol, const ENUM_POSITION_TYPE eType, const double fLot, const int nSL = 0, const int nTP = 0, const ulong nMagic = 0, const uint nSlippage = 1000){ bool bRetVal = false; // запрос MqlTradeRequest oRequest = {0}; MqlTradeResult oResult = {0}; double fPoint = SymbolInfoDouble(sSymbol, SYMBOL_POINT); int nDigits = (int) SymbolInfoInteger(sSymbol, SYMBOL_DIGITS); oRequest.action = TRADE_ACTION_DEAL; oRequest.symbol = sSymbol; oRequest.volume = fLot; oRequest.stoplimit = 0; oRequest.deviation = nSlippage; if(eType == POSITION_TYPE_BUY) { oRequest.type = ORDER_TYPE_BUY; oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_ASK), nDigits); oRequest.sl = NormalizeDouble(oRequest.price - nSL * fPoint, nDigits) * (nSL > 0); oRequest.tp = NormalizeDouble(oRequest.price + nTP * fPoint, nDigits) * (nTP > 0); } if(eType == POSITION_TYPE_SELL) { oRequest.type = ORDER_TYPE_SELL; oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_BID), nDigits); oRequest.sl = NormalizeDouble(oRequest.price + nSL * fPoint, nDigits) * (nSL > 0); oRequest.tp = NormalizeDouble(oRequest.price - nTP * fPoint, nDigits) * (nTP > 0); } // определим допустимый тип заливки ордера (зависит от типа исполнения - Instant, Market, биржевое и т.д.) switch((int) SymbolInfoInteger(sSymbol, SYMBOL_FILLING_MODE)) { case SYMBOL_FILLING_FOK: oRequest.type_filling = ORDER_FILLING_FOK; break; case SYMBOL_FILLING_IOC: oRequest.type_filling = ORDER_FILLING_IOC; break; default: oRequest.type_filling = ORDER_FILLING_RETURN; } oRequest.magic = nMagic; // проверка перед отправкой MqlTradeCheckResult oCheckResult= {0}; bool bCheck = OrderCheck(oRequest, oCheckResult); Print("Проверка заявки MarketOrder:", " OrderCheck = ", bCheck, ", retcode = ", oCheckResult.retcode, ", balance = ", NormalizeDouble(oCheckResult.balance, 2), ", equity = ", NormalizeDouble(oCheckResult.equity, 2), ", margin = ", NormalizeDouble(oCheckResult.margin, 2), ", margin_free = ", NormalizeDouble(oCheckResult.margin_free, 2), ", margin_level = ", NormalizeDouble(oCheckResult.margin_level, 2), ", comment = ", oCheckResult.comment); // если проверка удачная - отправка заявки if(bCheck == true && oCheckResult.retcode == 0) { bool bResult = false; // 3 попытки выставления ордера for(int k = 0; k < 3; k++) { bResult = OrderSend(oRequest, oResult); if(bResult == true && oResult.retcode == TRADE_RETCODE_DONE) break; if(k == 2) break; Sleep(100); } Print("Отправка заявки:", " OrderSend = ", bResult, ", retcode = ", oResult.retcode, ", deal = ", oResult.deal, ", order = ", oResult.order, ", volume = ", NormalizeDouble(oResult.volume, 2), ", price = ", NormalizeDouble(oResult.price, _Digits), ", bid = ", NormalizeDouble(oResult.bid, _Digits), ", ask = ", NormalizeDouble(oResult.ask, _Digits), ", comment = ", oResult.comment, ", request_id = ",oResult.request_id); if(oResult.retcode == TRADE_RETCODE_DONE) bRetVal = true; } else if(oResult.retcode == TRADE_RETCODE_NO_MONEY) { Print("Недостаточно денег для открытия позиции. Работа эксперта прекращена."); ExpertRemove(); } return(bRetVal);}ハイライトしたものを次のように書きます。switch((ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(sSymbol, SYMBOL_TRADE_EXEMODE); Alex2018 2017.01.24 09:58 #7224 ごきげんよう。トレーリングストップを搭載したEAを提案してもらえますか? 削除済み 2017.01.24 10:06 #7225 Alexey Viktorov:私ならハイライトの方をこう書きますね。switch((ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(sSymbol, SYMBOL_TRADE_EXEMODE);心から...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?)うまくいった!うまくいったAlexeiさん、ありがとうございます!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alex2018 2017.01.24 12:18 #7226 ごきげんよう。MT 5で使えるEAを教えてください トレーリングストップ付きのEAを教えてください できればスカルパーやNEWSなどで動作するものがいいです .よろしくお願いします。 Vladimir Karputov 2017.01.24 12:22 #7227 Alex2018:ごきげんよう。MT 5で使えるEAを教えてください トレーリングストップ付きのEAを教えてください できればスカルパーやNEWSなどで動作するものがいいです .よろしくお願いします。 検索エンジンは使用しましたか?こちらにもリンクがあります:トレーリングストップを使ったEA act1on 2017.01.24 13:36 #7228 購入したインジケータを ターミナルにインストールするアルゴリズムについて教えてください。購入したのですが、有効化できません。 Vladimir Karputov 2017.01.24 13:51 #7229 act1on:購入したインジケータを 端末にインストールする方法を教えてください。購入したのですが、アクティベーションができないのですが、何が問題なのでしょうか?マーケットで 購入したのか、はっきりさせてください。 act1on 2017.01.24 14:42 #7230 Vladimir Karputov: 明確なこと:マーケットから 購入したのですか? Yes from Market: https://www.mql5.com/ru/market/mt5/indicator 購入後、「ターミナルにインストール」をクリックし、取引ターミナルにアクセスしたが、何も起こらず、インジケータが表示されない MQL5 Маркет: Индикаторы www.mql5.com Маркет - магазин программ для MetaTrader 5 и MetaTrader 4 1...716717718719720721722723724725726727728729730...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜiRSI,iCCIという 2つの指標を使うのか、何が間違っているのか教えてください。インジケータは問題ないが、ミューイングとBBは警告が出る(タイプ変換によるデータ消失の可能性 インジケータは問題ない。mqh )
//| Indicator.mqh |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
// интерфейс к индикаторам.
class CIndicators
{
public:
double iRSI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift);
double iCCI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift);
double iBands(string symbol,ENUM_TIMEFRAMES tf,int BBPeriod,int shift,double BBDeviation,ENUM_APPLIED_PRICE BBPrice );
double iMA(string symbol,ENUM_TIMEFRAMES tf, int nMAPeriod,int shift, ENUM_MA_METHOD eMAMethod ,ENUM_APPLIED_PRICE MAPrice);
};
// -Создадим экземпляр индикатора iRSI
double CIndicators::iRSI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift)
{
//---
int hRSI = iRSI(symbol, tf, period, applied);
if(hRSI == INVALID_HANDLE)
return 0.0;
double rsi[];
CopyBuffer(hRSI, 0, shift, 1, rsi);
if(ArraySize(rsi))
return rsi[0];
return 0.0;
//--Создадим экземпляр индикатора iCCI
}
//----------------------------------
double CIndicators::iCCI(string symbol, ENUM_TIMEFRAMES tf, int period, ENUM_APPLIED_PRICE applied, int shift)
{
int hCCI = iCCI(Symbol(), PERIOD_CURRENT, 55, PRICE_CLOSE);
if(hCCI == INVALID_HANDLE)return 0.0;
double cci[];
ArrayResize(cci, 1);
CopyBuffer(hCCI, 0, 0, 1, cci);
return cci[0];
}
//--------------------------------------------------
// Создадим экземпляр индикатора ВВ
double CIndicators::iBands(string symbol,ENUM_TIMEFRAMES tf,int BBPeriod,int shift,double BBDeviation,ENUM_APPLIED_PRICE BBPrice)
{
int hBands = iBands(Symbol(),tf,BBPeriod,0,BBDeviation,PRICE_CLOSE);
if(hBands==INVALID_HANDLE)return 0.0;
// Создадим массив значений верхней границы ВВ
double fBBUpper[];
ArrayResize(fBBUpper,true);
CopyBuffer(hBands,UPPER_BAND,0,3,fBBUpper);
return fBBUpper[0];
// Создадим массив значений нижней границы ВВ
double fBBLower[];
ArraySetAsSeries(fBBLower,true);
CopyBuffer(hBands,LOWER_BAND,0,3,fBBLower);
return fBBLower[0];
}
// Создадим экземпляр индикатора МА
double CIndicators::iMA(string symbol,ENUM_TIMEFRAMES tf, int nMAPeriod,int shift, ENUM_MA_METHOD eMAMethod ,ENUM_APPLIED_PRICE MAPrice)
{
// получим его хэндл
int hMA=iMA(Symbol(), PERIOD_CURRENT, nMAPeriod,0,MODE_EMA,PRICE_CLOSE);
if(hMA == INVALID_HANDLE)return 0.0;
// Создадим массив значений МА,заполним тремя последними значениями мувинга.
double fMA[];
ArraySetAsSeries(fMA,true);
CopyBuffer(hMA,0,0,3,fMA);
return fMA[0];
}
10030のエラーは、Expert Advisorのコードが何の問題もなく動作した前の年、そして今、私は再びMQL5の変更を読む/検索するようになり、私は取引要求の 何を変更する必要があります。
// функция открытия позиции с рынка
bool MarketOrder(const string sSymbol, const ENUM_POSITION_TYPE eType, const double fLot, const int nSL = 0, const int nTP = 0, const ulong nMagic = 0, const uint nSlippage = 1000)
{
bool bRetVal = false;
// запрос
MqlTradeRequest oRequest = {0};
MqlTradeResult oResult = {0};
double fPoint = SymbolInfoDouble(sSymbol, SYMBOL_POINT);
int nDigits = (int) SymbolInfoInteger(sSymbol, SYMBOL_DIGITS);
oRequest.action = TRADE_ACTION_DEAL;
oRequest.symbol = sSymbol;
oRequest.volume = fLot;
oRequest.stoplimit = 0;
oRequest.deviation = nSlippage;
if(eType == POSITION_TYPE_BUY)
{
oRequest.type = ORDER_TYPE_BUY;
oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_ASK), nDigits);
oRequest.sl = NormalizeDouble(oRequest.price - nSL * fPoint, nDigits) * (nSL > 0);
oRequest.tp = NormalizeDouble(oRequest.price + nTP * fPoint, nDigits) * (nTP > 0);
}
if(eType == POSITION_TYPE_SELL)
{
oRequest.type = ORDER_TYPE_SELL;
oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_BID), nDigits);
oRequest.sl = NormalizeDouble(oRequest.price + nSL * fPoint, nDigits) * (nSL > 0);
oRequest.tp = NormalizeDouble(oRequest.price - nTP * fPoint, nDigits) * (nTP > 0);
}
// определим допустимый тип заливки ордера (зависит от типа исполнения - Instant, Market, биржевое и т.д.)
switch((int) SymbolInfoInteger(sSymbol, SYMBOL_FILLING_MODE))
{
case SYMBOL_FILLING_FOK:
oRequest.type_filling = ORDER_FILLING_FOK;
break;
case SYMBOL_FILLING_IOC:
oRequest.type_filling = ORDER_FILLING_IOC;
break;
default:
oRequest.type_filling = ORDER_FILLING_RETURN;
}
oRequest.magic = nMagic;
// проверка перед отправкой
MqlTradeCheckResult oCheckResult= {0};
bool bCheck = OrderCheck(oRequest, oCheckResult);
Print("Проверка заявки MarketOrder:",
" OrderCheck = ", bCheck,
", retcode = ", oCheckResult.retcode,
", balance = ", NormalizeDouble(oCheckResult.balance, 2),
", equity = ", NormalizeDouble(oCheckResult.equity, 2),
", margin = ", NormalizeDouble(oCheckResult.margin, 2),
", margin_free = ", NormalizeDouble(oCheckResult.margin_free, 2),
", margin_level = ", NormalizeDouble(oCheckResult.margin_level, 2),
", comment = ", oCheckResult.comment);
// если проверка удачная - отправка заявки
if(bCheck == true && oCheckResult.retcode == 0)
{
bool bResult = false;
// 3 попытки выставления ордера
for(int k = 0; k < 3; k++)
{
bResult = OrderSend(oRequest, oResult);
if(bResult == true && oResult.retcode == TRADE_RETCODE_DONE)
break;
if(k == 2)
break;
Sleep(100);
}
Print("Отправка заявки:",
" OrderSend = ", bResult,
", retcode = ", oResult.retcode,
", deal = ", oResult.deal,
", order = ", oResult.order,
", volume = ", NormalizeDouble(oResult.volume, 2),
", price = ", NormalizeDouble(oResult.price, _Digits),
", bid = ", NormalizeDouble(oResult.bid, _Digits),
", ask = ", NormalizeDouble(oResult.ask, _Digits),
", comment = ", oResult.comment,
", request_id = ",oResult.request_id);
if(oResult.retcode == TRADE_RETCODE_DONE)
bRetVal = true;
}
else if(oResult.retcode == TRADE_RETCODE_NO_MONEY)
{
Print("Недостаточно денег для открытия позиции. Работа эксперта прекращена.");
ExpertRemove();
}
return(bRetVal);
}
そして、私はまた尋ねたいと思いました:取引要求で 何を変更すべきか、エラー10030があります、以前はExpert Advisorコードは問題なく動作していましたが、今はMQL5で変更を読む/検索することを再び強制されます。
// функция открытия позиции с рынка
bool MarketOrder(const string sSymbol, const ENUM_POSITION_TYPE eType, const double fLot, const int nSL = 0, const int nTP = 0, const ulong nMagic = 0, const uint nSlippage = 1000)
{
bool bRetVal = false;
// запрос
MqlTradeRequest oRequest = {0};
MqlTradeResult oResult = {0};
double fPoint = SymbolInfoDouble(sSymbol, SYMBOL_POINT);
int nDigits = (int) SymbolInfoInteger(sSymbol, SYMBOL_DIGITS);
oRequest.action = TRADE_ACTION_DEAL;
oRequest.symbol = sSymbol;
oRequest.volume = fLot;
oRequest.stoplimit = 0;
oRequest.deviation = nSlippage;
if(eType == POSITION_TYPE_BUY)
{
oRequest.type = ORDER_TYPE_BUY;
oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_ASK), nDigits);
oRequest.sl = NormalizeDouble(oRequest.price - nSL * fPoint, nDigits) * (nSL > 0);
oRequest.tp = NormalizeDouble(oRequest.price + nTP * fPoint, nDigits) * (nTP > 0);
}
if(eType == POSITION_TYPE_SELL)
{
oRequest.type = ORDER_TYPE_SELL;
oRequest.price = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_BID), nDigits);
oRequest.sl = NormalizeDouble(oRequest.price + nSL * fPoint, nDigits) * (nSL > 0);
oRequest.tp = NormalizeDouble(oRequest.price - nTP * fPoint, nDigits) * (nTP > 0);
}
// определим допустимый тип заливки ордера (зависит от типа исполнения - Instant, Market, биржевое и т.д.)
switch((int) SymbolInfoInteger(sSymbol, SYMBOL_FILLING_MODE))
{
case SYMBOL_FILLING_FOK:
oRequest.type_filling = ORDER_FILLING_FOK;
break;
case SYMBOL_FILLING_IOC:
oRequest.type_filling = ORDER_FILLING_IOC;
break;
default:
oRequest.type_filling = ORDER_FILLING_RETURN;
}
oRequest.magic = nMagic;
// проверка перед отправкой
MqlTradeCheckResult oCheckResult= {0};
bool bCheck = OrderCheck(oRequest, oCheckResult);
Print("Проверка заявки MarketOrder:",
" OrderCheck = ", bCheck,
", retcode = ", oCheckResult.retcode,
", balance = ", NormalizeDouble(oCheckResult.balance, 2),
", equity = ", NormalizeDouble(oCheckResult.equity, 2),
", margin = ", NormalizeDouble(oCheckResult.margin, 2),
", margin_free = ", NormalizeDouble(oCheckResult.margin_free, 2),
", margin_level = ", NormalizeDouble(oCheckResult.margin_level, 2),
", comment = ", oCheckResult.comment);
// если проверка удачная - отправка заявки
if(bCheck == true && oCheckResult.retcode == 0)
{
bool bResult = false;
// 3 попытки выставления ордера
for(int k = 0; k < 3; k++)
{
bResult = OrderSend(oRequest, oResult);
if(bResult == true && oResult.retcode == TRADE_RETCODE_DONE)
break;
if(k == 2)
break;
Sleep(100);
}
Print("Отправка заявки:",
" OrderSend = ", bResult,
", retcode = ", oResult.retcode,
", deal = ", oResult.deal,
", order = ", oResult.order,
", volume = ", NormalizeDouble(oResult.volume, 2),
", price = ", NormalizeDouble(oResult.price, _Digits),
", bid = ", NormalizeDouble(oResult.bid, _Digits),
", ask = ", NormalizeDouble(oResult.ask, _Digits),
", comment = ", oResult.comment,
", request_id = ",oResult.request_id);
if(oResult.retcode == TRADE_RETCODE_DONE)
bRetVal = true;
}
else if(oResult.retcode == TRADE_RETCODE_NO_MONEY)
{
Print("Недостаточно денег для открытия позиции. Работа эксперта прекращена.");
ExpertRemove();
}
return(bRetVal);
}
ハイライトしたものを次のように書きます。
私ならハイライトの方をこう書きますね。
心から...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?)
うまくいった!うまくいった
Alexeiさん、ありがとうございます!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ごきげんよう。MT 5で使えるEAを教えてください トレーリングストップ付きのEAを教えてください できればスカルパーやNEWSなどで動作するものがいいです .よろしくお願いします。
購入したインジケータを 端末にインストールする方法を教えてください。購入したのですが、アクティベーションができないのですが、何が問題なのでしょうか?
明確なこと:マーケットから 購入したのですか?
購入後、「ターミナルにインストール」をクリックし、取引ターミナルにアクセスしたが、何も起こらず、インジケータが表示されない