//+------------------------------------------------------------------+double getMartinLot(double lot, double arrayLot[]){//ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛАstaticdouble balance_before, balance_after; //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОКstaticdouble save_Lot;
staticint loop;
if(loop == ArraySize(arrayLot))loop = 0;
balance_after = AccountBalance(); //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА if(balance_after >= balance_before){ //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
save_Lot = lot; //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГОloop = 0;
}else{
save_Lot = arrayLot[loop]; //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
loop++;
}
balance_before = balance_after; //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫreturn(save_Lot);
}
//+------------------------------------------------------------------+
エキスパートアドバイザーがM1で取引しているときに、注文を開くシグナルが来て、ストップがショートで、注文がスリップで閉じられたとします。
同じ分単位で再度注文を開けないようにするにはどうしたらよいでしょうか。
OrderSelect()の数値カウントは0から始まります。そして、1ということは、マーケットには1つしかないのに、2つ目の注文を探しているわけですから、うまくいかないわけです。
Borisさん、コードの小さな修正ですが、元のロットに戻るときに配列の位置をリセットすることを追加するのを忘れていました。
Tolikさん、アドバイスお願いします!不思議な動きをします。 負けた後、初期ロットをオープンすることがあり、このロットも負けた場合、再び初期ロットをオープンすることがあります。
そして、最初のロスの後、0.4かかることもある。
何か間違ったものを入れてしまったのでしょうか?
私はこのコードに非常に奇妙な方法で取り組んでいます。 1つ負けた後に最初のロットを開くことがあり、これがまた負けている場合は、最初のロットを開くことがあります。
そして、最初の損失が0.4を取る後に時々。
何か間違ったものを入れてしまったのでしょうか?
Borisさん、コードの小さな修正ですが、元のロットに戻るときに配列の位置をリセットするのを忘れていました。
なぜ正常に動作しないのか、その理由をお話しましたが、入れる場所を間違えているのです...。:)ホイールのネジを外してトランクに入れると、ホイールがあってドアが閉まるように見えるけど、遠くには行けないと思う...。:)
まったくもって同感です。しかし、私はあなたのコードを批判しているわけではなく、問題があると言っただけです)ところで、私はまた問題があるのですが、もし差し支えなければ-何が間違っているのか教えてください、私は何が間違っているのか本当に理解したいのです。
extern colorOpenBuy = Blue;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Red;
extern colorCloseSell = Aqua;
void deinit() {
Comment(");
}.
double Lots_New = Lot;
//+------------------------------------------------------------------+
//| |
//+--------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
Comment("トレードの時間はまだ来ていません!");
return(0);
言われた通りStart関数の前に貼り付けたのですが、コンパイル時に 'Lot' - initialization expected D:♪MetaTrader ♪Prostoj ♪2.mq4 (39, 20) と出てしまいます。
それが何なのか、教えてください。
新しいキャンドルの開きを確認する。新しければ開く、古ければ開かない...。
まったくもって同感です。しかし、私はあなたのコードを批判しているわけではなく、いくつかの問題があると言っているのです。 ところで、私は別の問題を抱えています。もしよろしければ、何が間違っているのか、教えてください。
外部カラー colorOpenBuy = Blue;
外部カラー colorCloseBuy = Aqua;
extern colorOpenSell = Red;
外部カラー colorCloseSell = Aqua;
void deinit() {
Comment(")です。
}
double Lots_New = Lot;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){。
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
Comment("貿易の時間はまだ来ていない!");
return(0)です。
教えていただいたように、Start関数の前にここに挿入したのですが、コンパイル時に 'Lot' - initialization expected D:\MetaTrader⇄Prostoj_2.mq4 (39, 20) と表示されます。
それが何なのか、教えてください。
Lotはコードのどこで初期化されていますか?
次に、大鹿をチェックした後だけ、Lots_Newを先に書いたように変更するか、value = Lotとします。
ああ...配列に苦労している...。インダクタのデータを配列に埋めようと すると、小さな関数がブーブー言いながら膠着状態に...。何が間違っているのか、教えてください。
私はこのように呼んでいます。
SaveDataIND(TempIND, 20);
どこが問題なのか?ああ...配列に苦労している...。インダクタのデータを配列に埋めようとすると、小さな関数がブーブー言いながら膠着状態に...。何が間違っているのか、教えてください。
私はこのように呼んでいます。
一体どこに問題があるのでしょうか?関数にパラメータを渡す ときに、SaveDataIND(double TempIND[])と渡すと、あなたの犬。
double TempIND[ ] は、実際には関数用の新しい配列ですが、パラメータを変更する権利がないため、SaveDataIND(double& TempIND[]) を試してみてください。