BlackCoq: Mladenさん、ありがとうございました。エラーなしでコンパイルできるようになるまでコードを少しいじりましたが、EAはまだ損切り後に停止して反転しています。これは私が今使っている正確なコードです。 double GetLastPL() Gives me the following error: '(' - function definition unexpected.
Compiling 'universalMAcrossECNmartingaleSAR.mq4'... '(' - function definition unexpected (538, 20)'TempLastOrderProfit' - variable not defined (548, 15)'TempLastOrderProfit' - variable not defined (551, 15)'TempLastOrderProfit' - variable not defined (553, 52)
私はマーチンゲールシステムに非常に似たコードを使用しており、完璧に動作しています。 マーチンゲールでも使えるのだから、今すぐ使えるのでは?
このようなものを使ってみてください。
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
{
CloseTime = OrderCloseTime();
TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission();
}
}
return(TempLastOrderProfit);
}
これは最後の注文の利益(または損失)の正確な金額を返します。
以下のようにすると、最後の注文の利益(または損失)の正確な額が返されます。
Mladenさん、ありがとうございます。エラーなしでコンパイルできるようになるまでコードを少しいじりましたが、EAはまだ損失の後に停止して反転します。これは私が今使っている正確なコードです。
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if (オーダーセレクト(i,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
{
CloseTime = OrderCloseTime()。
}
if(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0)
{
if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true))
{
subCloseOrder();
if(subTotalTrade()>0) subCloseOrder()。
if(subTotalTrade()>0) subCloseOrder(); if(IsTesting() & && BuyCondition==true) { subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !");
}
}
}
double GetLastPL() 以下のエラーが発生しました: '(' -関数 定義が予期しません。
Mladenさん、ありがとうございました。エラーなしでコンパイルできるようになるまでコードを少しいじりましたが、EAはまだ損切り後に停止して反転しています。これは私が今使っている正確なコードです。 double GetLastPL() Gives me the following error: '(' - function definition unexpected.
BlackCoq
OrderProfit() のような関数は、クローズドオーダーのリストから現在選択されているオーダーの 利益を返すので、ループ内ですべての論理比較を行う必要があります。もしそれがメインループ内でない場合(for(int i=OrdersHistoryTotal()-1;i>=0;i--)) 、最後に選択された注文のみがテストされ、それが最後の注文であることを意味しません(metaquotesはドキュメントで、終了(またはまだオープン)注文リストの注文は特定の順番でなくてもよいと明言しており、コーダーの責任として順番を確認することになっています)。
BlackCoq OrderProfit()のような関数は、クローズドオーダーのリストから現在選択されているオーダーの利益を返しているので、ループ内ですべての論理比較を行う必要があります。メインループ内でない場合(for(int i=OrdersHistoryTotal()-1;i>=0;i--) )、最後に選択された注文のみがテストされ、それが最後の注文であることを意味しません(metaquotesは、クローズド(またはまだオープン)注文のリスト内の注文は特定の順序でなくてもよいとドキュメントに明記しており、コーダーの責任として注文をチェックすることになっています)。
この一見簡単そうな作業に何時間も失敗した後、続ける前にもっとたくさんプログラミングを勉強することにしました。とにかく助けていただきありがとうございました
これを試したところ、EAが全くポジションを開かなくなりました。
{ double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); } } { if(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
And with this, it would "stop and reverse" even if last trade was a loss:
[PHP] { double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission(); } } return(TempLastOrderProfit); { if(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }もう一度、ありがとうございました。
この簡単そうに見える作業に何時間も失敗した後、私は続ける前にもっと多くのプログラミングを勉強することにしました。とにかく助けていただきありがとうございました
これを試したところ、EAが全くポジションを開かなくなりました。
{ double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); } } { if(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
And with this, it would "stop and reverse" even if last trade was a loss:
[PHP] { double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission(); } } return(TempLastOrderProfit); { if(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }BlackCoq
私が投稿した関数を そのまま使用すると、最後に閉じた注文の正確な利益が返されます(何も変更する必要はありません)。
BlackCoq 私が投稿した関数をそのまま使用すると、最後に閉じた注文の正確な利益が返されます(何も変更する必要はありません)。
関数を コピーしようとすると、どういじっても多数のエラーが発生します。
このコード
{
double GetLastPL()
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if (オーダーセレクト(i,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
{
CloseTime = OrderCloseTime();
TempLastOrderProfit = OrderProfit() + OrderSwap() + OrderCommission();
}
}
return(TempLastOrderProfit);
{
if(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0)
{
if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true))
{
subCloseOrder();
if(subTotalTrade()>0) subCloseOrder()。
if(subTotalTrade()>0) subCloseOrder(); if(IsTesting() & && BuyCondition==true) { subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !");
}
}
}
}エラーが表示されます。
universalMAcrossECNmartingaleSAR.mq4'をコンパイルしています...
'(' - 関数定義が予期しない (538, 20)
'TempLastOrderProfit' - 変数が定義されていません (548, 15)
'TempLastOrderProfit' - 変数が定義されていません (551, 15)
TempLastOrderProfit' - 変数が定義されていません (553, 52)
関数をコピーしようとすると、どういじっても多数のエラーが発生します。
このコード
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
Gives me the errors:
[PHP]
Compiling 'universalMAcrossECNmartingaleSAR.mq4'... '(' - function definition unexpected (538, 20)'TempLastOrderProfit' - variable not defined (548, 15)'TempLastOrderProfit' - variable not defined (551, 15)'TempLastOrderProfit' - variable not defined (553, 52)
BlackCoq
この関数は、他の関数の外側に貼り付ける必要があります。以下は、それがどのように機能し、どのように使用されるべきかを示す非常に単純なeaです。
BlackCoq その関数は、他の関数の外に貼り付ける必要があります。以下は、それがどのように機能し、どのように使用されるべきかを示す非常に単純な電子メールです。
私の見落としだと思うのですが、EA内の他の関数の外に関数を コピーしようとしても、以下のエラーが出ます。
'(' - 関数定義が予期しない (double GetLastPL() の後)
'TempLastOrderProfit' - 変数が定義されていません (554, 15)
'TempLastOrderProfit' - 変数が定義されていません (557, 15)
何か見落としているのかもしれませんが、EA内の他の関数の外に関数をコピーしようとしても、以下のエラーが発生します。
'(' - 関数定義が予期しない (double GetLastPL() の後)
'TempLastOrderProfit' - 変数が定義されていません (554, 15)
'TempLastOrderProfit' - 変数が定義されていません (557, 15)申し訳ありませんが、あなたのコードがないと、何をやっているのかさっぱりわかりません。
このテストEAからわかるように、全く問題なく動作しています。
テストEAを見ればわかるように、全く問題なく動作しています。
添付していただいたEAをコンパイルしようとすると、私もいくつかのエラーが発生します。MT4のバージョンが違うのでしょうか?
ストップ&リバースの前に機能を 追加しようとしているEAを添付します。