//--------------------------------------------------------------------externdoubleLevel=1.3200; // Заданный уровень stringText[101]; // Объявление массива//--------------------------------------------------------------------intinit()// Спец. ф-ия init(){// Присвоение значенийText[1]="один "; Text[15]="пятнадцать ";
Text[2]="два "; Text[16]="шестнадцать ";
Text[3]="три "; Text[17]="семнадцать ";
Text[4]="четыре "; Text[18]="восемнадцать ";
Text[5]="пять "; Text[19]="девятнадцать ";
Text[6]="шесть "; Text[20]="двадцать ";
Text[7]="семь "; Text[30]="тридцать ";
Text[8]="восемь "; Text[40]="сорок ";
Text[9]="девять "; Text[50]="пятьдесят ";
Text[10]="десять "; Text[60]="шестьдесят";
Text[11]="одиннадцать "; Text[70]="семьдесят ";
Text[12]="двенадцать "; Text[80]="восемьдесят ";
Text[13]="тринадцать "; Text[90]="девяносто";
Text[14]="четырнадцать "; Text[100]= "сто";
// Вычисление значенийfor(inti=20; i<=90; i=i+10)// Цикл по десяткам{for(intj=1; j<=9; j++)// Цикл по единицамText[i+j]=Text[i] + Text[j]; // Вычисление значения }return; // Выход из init()}//--------------------------------------------------------------------intstart()// Спец. ф-ия start(){intDelta=NormalizeDouble((Bid-Level)/Point,0);// Превышение //--------------------------------------------------------------------if(Delta>=0)// Цена не выше уровня{Alert("Цена ниже уровня"); // Сообщениеreturn; // Выход из start()}//--------------------------------------------------------------------if(Delta<100)// Цена более 100{Alert("Более ста пунктов"); // Сообщениеreturn; // Выход из start()}//--------------------------------------------------------------------Alert("Плюс ",Text[Delta],"pt."); // Вывод на экранreturn; // Выход из start()}
//---------------------------------------------------------------------
По-моему в условных операторах неправильно проставлены знаки сравнения. Они должны быть с точностью до наоборот. Скажите прав ли я? И если нет, то почему так?
そして、その解決策を提案します。
こんにちは!MQL4を勉強している中で、ちょっとした疑問があります。このサイトのチュートリアルにある問題です。ここで、問題25の条件です。レートが指定したレベルを超えたら、超えたことを示すメッセージを出力し(最大100ポイント)、それ以外の場合は、超えていないことを伝えるプログラムを作成する。
そして、その解決策を提案します。
可能な解決策を表示します。トレーニングに便利です。
他の選択肢もある。他にも間違いがあります。
もっと自分を信じよう。実験
こんにちは!MQL4の勉強をしていて、ちょっとした疑問があります。タスクは、本サイトのチュートリアルにあります。ここで、問題25の条件です。レートが指定したレベルを超えた場合は、レートがレベルを超えたというメッセージを出力し(最大100ポイント)、それ以外の場合はレートが指定したレベルを超えていないというメッセージを出力する、という条件を実現するプログラムを作成しなさい。 そして、その解決策を提案します。
追伸
具体的には、この例のように配列を扱う場合の有用性です。
データを言葉で表現できること。
NormalizeDouble関数と定義済み Point変数を使用することです。
より簡単な趣味を選択できる可能性がある。
どうやら、クラス内で直接外部変数を宣言する方法はないようです。では、どのような選択肢があるのでしょうか。このクラスを使用するときにのみ必要となる、これらの外部固有の変数をExpert Advisor自体や他の場所で宣言したくない場合。唯一の選択肢は、これらの外部変数を宣言するインルーターを作ることだと思います。そして、その中にクラスが含まれているはずですよね?
そして、そのクラスを呼び出すために、クラス自体をインクルードする必要があります。そうなんですか?それとも、他のバリエーションがあるのでしょうか?
ただ、私にはよく見えません。ネストしたインクルードファイルの作成が多く...だから、そんな疑問があるんです。
それとも、通常のライブラリのように、クラスを宣言する前に外部変数を宣言し、必要なライブラリをインポートすることは可能なのでしょうか?こんな感じの意味です。
初めて見ました。だから、方向性は間違っていないのかなと...。それらをグローバル変数としてCommentで端末画面に出力する。ゼロはなく、マイナスの数字だけだった。その後、私は
Expert Advisorにインジケータコードを転送するとエラーが発生する。 コード部分のゼロ除算
...
それらをグローバル変数としてCommentで端末画面に出力する。ゼロはなく、マイナスの数字だけだった。その後、私は
...
に。
...
を、元の位置に戻してください。全くエラーなし原因は何だったのでしょうか?さらにインターネットを消した。また、分数の分母にゼロを渡すことができない「ゼロ除算」というエラーも出ました。今、分割する前に、私は次のような正式なチェックをしています。
そして、エラーは消えました。つまり、プログラマが100%0がないと確信していても、分母=0の場合にどうするかをコンパイラに指示しなければならない。
こんにちは、コードについて教えてください。私はEAが基本的なことを行う必要があります - 垂直(すなわち、厳密に時間、価格ではない)線に近づいたときにポジションを開く、すなわち、私が理解するように120すなわちここで持っている指定されたshi間隔 - 2分です。ラインの色で買いか売りかを判断してください。インターネットで検索し、書き直したところ、次のようになりました。
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
こんにちは、コードについて教えてください。私はEAが基本的なことを行う必要があります - 垂直(すなわち、厳密に時間、価格ではない)線に近づいたときにポジションを開く、すなわち、私が理解するように120すなわちここで持っている指定されたshi間隔 - 2分です。ラインの色で買いか売りかを判断してください。ネットで検索して書き直しました。
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
端末の時刻と一致する場合はTimeLocal()でも良いですが 、TimeCurrent()の 方がより確実です。
operacia変数の型をintに変更し、OP_BUYとOP_SELLの引用符を削除しました
端末の時刻と同じならTimeLocal() でも良いが、TimeCurrent()の 方が信頼 性が高い。
operacia変数の型をintに変更し、OP_BUYとOP_SELLの引用符を削除しました
ありがとうございます。TimeCurrentについて......確かに、私の時刻はサーバーの時刻と一致していません。直したが、まだ動かない...。ログにエラーを書き込まない。
追伸:前回の投稿では、スペースなしのコードがなぜか挿入されていました。でも、中括弧は全部正しくつけたつもりです。
MT4 - 625, ライブラリでフクロウをテストしようとするとテスターメッセージが表示される。
2014.03.29 18:38:48.753 'C:♪Program FilesAdmiral1 ♪MQL4 ♪Libraries ♪ingLib094.mq4' is not 32-bit version.
その前にフクロウは何事もなくコンパイルし、ライブラリも一文字もなかった。実際、まったく理解できない。
私のシステム(Windowsのことです)は32ビットで、他のは持ったことがありません。7番目。
図書館は私のネイティブなもので、ずっと持っています。新規構築でリアルタイムにうまくいく。他のフクロウも含めて。また、以前のバージョンのテスターでは問題なく使用できました。
しかし、テスターでは開こうとしないし、理由は指まで吸われてしまう。
そして、 すべてのマニュアルに 32ビットの場合については 一言も 書かれていない。