if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("BUY order opened : ", OrderOpenPrice()); else Print("Error opening BUY order :", GetLastError());
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("SELL order opened : ", OrderOpenPrice()); else Print("Error opening SELL order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//ポジションチェック
for (int i = 0; i < 合計; i ++) { { {オーダーセレクト(i, SELECT_BY_POS, MOD_TRADERS)
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("BUY order opened : ", OrderOpenPrice()); else Print("Error opening BUY order :", GetLastError());
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("SELL order opened : ", OrderOpenPrice()); else Print("Error opening SELL order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//ポジションチェック
for (int i = 0; i < 合計; i ++) { { {オーダーセレクト(i, SELECT_BY_POS, MOD_TRADERS)
買いのみ、売りなし
現在、買い注文のみで、売り注文はありません。
どなたか理由をご存知でしょうか?
//+------------------------------------------------------------------+
//| シグナル開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+
を表示させると、もう一つ問題があります。
第二段階は、おそらくあなたのiCustom()関数 です。
今のところ買いのみで、売りの注文はありません。
どなたか理由をご存じですか?
//+------------------------------------------------------------------+
//| 信号の開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+未来の日付にオブジェクトを配置し、表示する?
こんにちは、MQL4がインジケータオブジェクトを未来に配置し、未来のオブジェクトを表示することをサポートしているかどうか、ご存知の方はいらっしゃいますか? ObjectMoveで未来の日付に移動してみましたが(エラーは返ってきません)、表示は最後のティックの日付で止まってしまいます。 ありがとうございます。
MAにはシフト機能がある...ということであれば。+2はTFバーを2つ前方にスライドさせます。-2は2つ後ろにスライドさせる。
全体のコードを公開すると、別の問題があります...第二段階は、おそらくあなたのiCustom()関数です。
#プロパティリンク "https://www.forex-tsd.com"
extern int MagicNumber = 1001;
extern bool EachTickMode = False;
extern double Lots = 0.01;
extern int Slippage = 4;
extern bool StopLossMode = True;
extern int StopLoss = 70;
extern bool TakeProfitMode = True;
extern int TakeProfit = 300;
extern bool TrailingStopMode = True; extern int TakeProfit = 300; extern bool TrailingStopMode = True;
extern int TrailingStop = 25;
extern double MaximumRisk =0;//0.15
extern double DecreaseFactor =3;
extern int MaxOrders = 3000;
extern bool UseHourTrade = False;
extern int FromHourTrade = 8;
extern int ToHourTrade = 18;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#定義 SIGNAL_CLOSESELL 4
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start() {
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("取引時間が来ていません!");
return(0);
}
}
int Order = SIGNAL_NONE;
int Total, Ticket;
ダブルStopLossLevel、TakeProfitLevel。
int digit = MarketInfo(Symbol(),MODE_DIGITS);
if (EachTickMode && Bars != BarCount) EachTickMode = False;
Total = OrdersTotal();
オーダー = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| シグナル開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+
//買い
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){
if(ScanTrades() < MaxOrders) { (ScanTrades()の場合。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) { { /Check free margin
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
StopLossLevel = Ask - StopLoss * Point;
TakeProfitLevel = Ask + TakeProfit * Point;
チケット = OrderSend(Symbol(), OP_BUY, LotsOptimized(),
NormalizeDouble(Ask,digit)。
スリッページ
NormalizeDouble(StopLossLevel,digit).NormalizeDouble(StopLossLevel)です。
NormalizeDouble(TakeProfitLevel,digit)。
"買い(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(チケット > 0) {
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("BUY order opened : ", OrderOpenPrice()); else Print("Error opening BUY order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//売り
if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{
if(ScanTrades() < MaxOrders) { (ScanTrades()の場合。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) { { /Check free margin
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
StopLossLevel = Bid + StopLoss * Point;
TakeProfitLevel = ビッド - TakeProfit * ポイント;
チケット = OrderSend(Symbol(), OP_SELL, LotsOptimized(),
NormalizeDouble(Bid,digit)。
スリッページ
NormalizeDouble(StopLossLevel,digit).NormalizeDouble(StopLossLevel)。
NormalizeDouble(TakeProfitLevel,digit)。
"売り(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。
if(チケット > 0) {
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("SELL order opened : ", OrderOpenPrice()); else Print("Error opening SELL order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//ポジションチェック
for (int i = 0; i < 合計; i ++) { { {オーダーセレクト(i, SELECT_BY_POS, MOD_TRADERS)
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { { {
if(OrderType() == OP_BUY && OrderMagicNumber()==MagicNumber ) {。
//閉じる
if (オーダー == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
//トレーリングストップ
if(TrailingStopMode && TrailingStop > 0) { /トレーリングストップ
if(Bid - OrderOpenPrice() > Point * TrailingStop) { { /TrailingStopMode && TrailingStop > 0
if(オーダーストップ・ロス() < ビッド - ポイント * トレーリングストップ) { { (ビッド - ポイント * トレーリングストップ)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
}
} else {
if(OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber))
{
//閉じる
if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。
{
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
//トレーリングストップ
if (TrailingStopMode && TrailingStop > 0)
{
if((OrderOpenPrice() - Ask) > (Point * TrailingStop) ) {
if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
}
}}
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
int ScanTrades()
{
int total = OrdersTotal();
int numords = 0;
for(int cnt=0; cnt<total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderType()<=OP_SELLSTOP && OrderMagicNumber() == MagicNumber)
numords++;
}
return(numords);
}
//bool ExistPositions() {。
// for (int i=0; i<OrdersTotal(); i++) { .
// if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) {
// if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { ...
// return(True)を返します。
// }
// }
// }
// return(False)とする。
//}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // ヒストリーの注文数
int losses=0; // ブレークのないロスカット注文の数
//ロットサイズを選択
if(MaximumRisk>0)lot=NormalizeDouble(Lots*AccountFreeMargin()*MaximumRisk/1000.0,1).If(MaximumRisk>0)lot=NormalizeDouble(Lots*AccountFreeMargin()*MaximumRisk/1000.1,1);
//---- 損切り注文の回数を計算する(ブレークなし
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } { If(OrderSymbol()!
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0)break。
if(OrderProfit()<0)損失++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1)。
//---- ロットサイズを返す
if(lot<0.1)lot=0.1。
return(lot)。
}
//+------------------------------------------------------------------+
何が間違っているのかヒントとなるエラーコードなどは(バックテストでは)出ていますか?
#プロパティリンク "https://www.forex-tsd.com"
extern int MagicNumber = 1001;
extern bool EachTickMode = False;
extern double Lots = 0.01;
extern int Slippage = 4;
extern bool StopLossMode = True;
extern int StopLoss = 70;
extern bool TakeProfitMode = True;
extern int TakeProfit = 300;
extern bool TrailingStopMode = True; extern int TakeProfit = 300; extern bool TrailingStopMode = True;
extern int TrailingStop = 25;
extern double MaximumRisk =0;//0.15
extern double DecreaseFactor =3;
extern int MaxOrders = 3000;
extern bool UseHourTrade = False;
extern int FromHourTrade = 8;
extern int ToHourTrade = 18;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#定義 SIGNAL_CLOSESELL 4
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start() {
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("取引時間が来ていません!");
return(0);
}
}
int Order = SIGNAL_NONE;
int Total, Ticket;
ダブルStopLossLevel、TakeProfitLevel。
int digit = MarketInfo(Symbol(),MODE_DIGITS);
if (EachTickMode && Bars != BarCount) EachTickMode = False;
Total = OrdersTotal();
オーダー = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| シグナル開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+
//買い
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)) )){
if(ScanTrades() < MaxOrders) { (ScanTrades()の場合。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) { { /Check free margin
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
StopLossLevel = Ask - StopLoss * Point;
TakeProfitLevel = Ask + TakeProfit * Point;
チケット = OrderSend(Symbol(), OP_BUY, LotsOptimized(),
NormalizeDouble(Ask,digit)。
スリッページ
NormalizeDouble(StopLossLevel,digit).NormalizeDouble(StopLossLevel)です。
NormalizeDouble(TakeProfitLevel,digit)。
"買い(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(チケット > 0) {
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("BUY order opened : ", OrderOpenPrice()); else Print("Error opening BUY order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//売り
if (注文 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。{
if(ScanTrades() < MaxOrders) { (ScanTrades()の場合。
//フリーマージンチェック
if (アカウントフリーマージン() < (1000 * ロット)) { { /Check free margin
Print("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
StopLossLevel = Bid + StopLoss * Point;
TakeProfitLevel = ビッド - TakeProfit * ポイント;
チケット = OrderSend(Symbol(), OP_SELL, LotsOptimized(),
NormalizeDouble(Bid,digit)。
スリッページ
NormalizeDouble(StopLossLevel,digit).NormalizeDouble(StopLossLevel)。
NormalizeDouble(TakeProfitLevel,digit)。
"売り(#" + MagicNumber + ")", MagicNumber, 0, DeepPink)。
if(チケット > 0) {
if (オーダーセレクト(チケット, SELECT_BY_TICKET, MODE_TRADES))Print("SELL order opened : ", OrderOpenPrice()); else Print("Error opening SELL order :", GetLastError());
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//ポジションチェック
for (int i = 0; i < 合計; i ++) { { {オーダーセレクト(i, SELECT_BY_POS, MOD_TRADERS)
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol())) { { {
if(OrderType() == OP_BUY && OrderMagicNumber()==MagicNumber ) {。
//閉じる
if (オーダー == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
//トレーリングストップ
if(TrailingStopMode && TrailingStop > 0) { /トレーリングストップ
if(Bid - OrderOpenPrice() > Point * TrailingStop) { { /TrailingStopMode && TrailingStop > 0
if(オーダーストップ・ロス() < ビッド - ポイント * トレーリングストップ) { { (ビッド - ポイント * トレーリングストップ)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
}
} else {
if(OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber))
{
//閉じる
if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。
{
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
//トレーリングストップ
if (TrailingStopMode && TrailingStop > 0)
{
if((OrderOpenPrice() - Ask) > (Point * TrailingStop) ) {
if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
}
}}
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
int ScanTrades()
{
int total = OrdersTotal();
int numords = 0;
for(int cnt=0; cnt<total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderType()<=OP_SELLSTOP && OrderMagicNumber() == MagicNumber)
numords++;
}
return(numords);
}
//bool ExistPositions() {。
// for (int i=0; i<OrdersTotal(); i++) { .
// if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) {
// if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { ...
// return(True)を返します。
// }
// }
// }
// return(False)とする。
//}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // ヒストリーの注文数
int losses=0; // ブレークのないロスカット注文の数
//ロットサイズを選択
if(MaximumRisk>0)lot=NormalizeDouble(Lots*AccountFreeMargin()*MaximumRisk/1000.0,1).If(MaximumRisk>0)lot=NormalizeDouble(Lots*AccountFreeMargin()*MaximumRisk/1000.1,1);
//---- 損切り注文の回数を計算する(ブレークなし
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } { If(OrderSymbol()!
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0)break。
if(OrderProfit()<0)損失++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1)。
//---- ロットサイズを返す
if(lot<0.1)lot=0.1。
return(lot)。
}
//+------------------------------------------------------------------+今、RSIFilterだけでバックテストをしています。このスレッドで数回前にRSIMixFilterを使い、そのインディケータを公開しましたが、BUYとSELLSを得ることができますので、BUYとSELLの命令を行うロジックはOKで、問題はあなたのiCustomシグナルにあります...
RSIMixFilterは、このスレッドにはありません、すみません、ASKに あります。
今のところ買いのみで、売りの注文はありません。
誰か理由を知っていますか?
//+------------------------------------------------------------------+
//| シグナル開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+2007年4月から現在までのEURUSD H1を、このRSIMixFilterだけでバックテストして みました...
90%のモデリング品質であるはずなのに、なぜ表示されないのかがわかりません。
今のところ買いのみで、売りの注文はありません。
誰か理由を知っていますか?
//+------------------------------------------------------------------+
//| 信号開始
//+------------------------------------------------------------------+
double sig_buy = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 0, 0);
double sig_sell = iCustom(NULL, 0, "Slope Direction Line",40, 2, 0, 1, 0)です。
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1); double sig_buy=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if (sig_buy>0 && Sg>0) 注文 = SIGNAL_BUY;
if (sig_sell>0 && Sg<0 ) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| シグナル終了
//+------------------------------------------------------------------+このバックテストでは、買いと売りの両方が出たのでしょうか、それともどちらか一方だけだったのでしょうか?私の場合、買いしか出ませんでした(コードを変えたら売りしか出ませんでした)。
私は本当にエラーを示す何も見ていない。
今、RSIFilterだけでバックテストをしています。このスレッドの数記事前にRSIMixFilterを使い、そのインディケータを公開しましたが、BUYとSELLSを得ることができます。
ということは、これでOK?
double Sg=iCustom(NULL,0, "RSIFilter_v1",5,5,0,1);
if ( Sg>0 ) 注文 = SIGNAL_BUY;
if (Sg<0 ) Order = SIGNAL_SELL;