MT5端末のプログラミング言語を学びたいのですが、初心者なので何から始めればいいですか? - ページ 6 123456789 新しいコメント Ihor Herasko 2019.02.27 20:12 #51 Vasiliy Kolesov:コバレフの教科書を一から学ぶのは、時代遅れで不便です。演習を始めても、コンパイルができない。また、練習をせずにただ読むだけでは、物事を覚えられなくなります。何か単純な例の話をしているわけではないと思うのですが。もう教科書の最後のほうにあるんでしょうね。そして、それはおそらく構文の問題で、基本を理解していれば、簡単に修正できるものです。いずれにせよ、TCはいつでも、この例やこの例はなぜコンパイルできないのか、と問うことができます。 チュートリアルの中で、コンパイルできない例を教えてください。一例として、分解してみましょう。 Ihor Herasko 2019.02.27 20:17 #52 Ilya Malev:MQLだからC++を学べというのはごもっともな意見で、C++の方が資料もたくさんありますしね。C++が分かるなら、ヘルプから他人のEAを解析してMQLを勉強してください。MT以外の活動を計画的に行う場合です。しかし、そんなことを事前に計画することはできない。今は、MTのライティングを習得することが目標です。また、CやC++で始めた人は、MQLに最初からないそのようなもののために、そこで立ち往生してしまうでしょう。結局、単純な値の印字でも、coutではできないのです。この点では、MQLはプリントや アラートなど、より簡単です。 だから、必要なものから勉強したほうがいいんです。そして後で、気に入って続けたいと思ったら、C++に切り替えればいいのです。 BillionerClub 2019.02.27 20:22 #53 初心者の方はC++を学んでください。ここに良い資料がありますhttps://foxford.ru/wiki/informatika/otlichiya-yazykov-programmirovaniya-si-i-s プロでない人は避けてください。彼らの言葉は乾いていて、まったく記憶に残りません。ニーモニクスのテクニックを使う。インターネットでこのトピックに関する本がたくさん出ている。 個人的には、何かを記憶するためには、例えば機能などを現実のものとして想像し、さらに明るさやユーモア、セックス、シュールさなどを加えていく必要があります。 Dmitiry Ananiev 2019.02.27 20:39 #54 multiplicator:にこしたことはない PositionOpenには、さらに6つのパラメータを入力する必要があります。その他のパラメータは規定する必要はない Vasiliy Kolesov 2019.02.27 20:48 #55 Ihor Herasko:これらは単純な例とは言い難い。すでに教科書の巻末に掲載されているのでしょう。そして、それはおそらく構文に関するもので、基本を理解していれば、簡単に修正することができます。いずれにせよ、TCはいつでも、この例やこの例はなぜコンパイルできないのか、と問うことができます。 チュートリアルの中で、コンパイルできない例を教えてください。一例を挙げましょう。はい、最初から、例えばStart関数がなく、今はOnInit() になっています。 ここに良い記述がありました、ゼロから始めるならhttps://sgr-tradeinvest.ru/mql4 Ihor Herasko 2019.02.27 21:11 #56 Vasiliy Kolesov :はい、最初から、たとえばStart関数はありませんが、現在はOnInit()です。編集済み。エラーはありません。 「機能」という用語を基本的に理解することで簡単に修正できる警告は1つだけです。私は少し大きな例を取りました: //-------------------------------------------------------------------- // tradingexpert.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- #property copyright "Copyright © Book, 2007" #property link "http://AutoGraf.dp.ua" //--------------------------------------------------------------- 1 -- // Численные значения для М15 extern double StopLoss = 200 ; // SL для открываемого ордера extern double TakeProfit = 39 ; // ТР для открываемого ордера extern int Period_MA_1= 11 ; // Период МА 1 extern int Period_MA_2= 31 ; // Период МА 2 extern double Rastvor = 28.0 ; // Расстояние между МА extern double Lots = 0.1 ; // Жестко заданное колич. лотов extern double Prots = 0.07 ; // Процент свободных средств bool Work= true ; // Эксперт будет работать. string Symb; // Название финанс. инструмента //--------------------------------------------------------------- 2 -- int start() { int Total, // Количество ордеров в окне Tip=- 1 , // Тип выбран. ордера (B=0,S=1) Ticket; // Номер ордера double MA_1_t, // Значен. МА_1 текущее MA_2_t, // Значен. МА_2 текущее Lot, // Колич. лотов в выбран.ордере Lts, // Колич. лотов в открыв.ордере Min_Lot, // Минимальное количество лотов Step, // Шаг изменения размера лота Free, // Текущие свободные средства One_Lot, // Стоимость одного лота Price, // Цена выбранного ордера SL, // SL выбранного ордера TP; // TP выбранного ордера bool Ans = false , // Ответ сервера после закрытия Cls_B= false , // Критерий для закрытия Buy Cls_S= false , // Критерий для закрытия Sell Opn_B= false , // Критерий для открытия Buy Opn_S= false ; // Критерий для открытия Sell //--------------------------------------------------------------- 3 -- // Предварит.обработка if ( Bars < Period_MA_2) // Недостаточно баров { Alert ( "Недостаточно баров в окне. Эксперт не работает." ); return ; // Выход из start() } if (Work== false ) // Критическая ошибка { Alert ( "Критическая ошибка. Эксперт не работает." ); return ; // Выход из start() } //--------------------------------------------------------------- 4 -- // Учёт ордеров Symb= Symbol (); // Название фин.инстр. Total= 0 ; // Количество ордеров for ( int i= 1 ; i<= OrdersTotal (); i++) // Цикл перебора ордер { if ( OrderSelect (i- 1 , SELECT_BY_POS )== true ) // Если есть следующий { // Анализ ордеров: if ( OrderSymbol ()!=Symb) continue ; // Не наш фин. инструм if ( OrderType ()> 1 ) // Попался отложенный { Alert ( "Обнаружен отложенный ордер. Эксперт не работает." ); return ; // Выход из start() } Total++; // Счётчик рыночн. орд if (Total> 1 ) // Не более одного орд { Alert ( "Несколько рыночных ордеров. Эксперт не работает." ); return ; // Выход из start() } Ticket= OrderTicket (); // Номер выбранн. орд. Tip = OrderType (); // Тип выбранного орд. Price = OrderOpenPrice (); // Цена выбранн. орд. SL = OrderStopLoss (); // SL выбранного орд. TP = OrderTakeProfit (); // TP выбранного орд. Lot = OrderLots (); // Количество лотов } } //--------------------------------------------------------------- 5 -- // Торговые критерии MA_1_t= iMA ( NULL , 0 ,Period_MA_1, 0 , MODE_LWMA , PRICE_TYPICAL , 0 ); // МА_1 MA_2_t= iMA ( NULL , 0 ,Period_MA_2, 0 , MODE_LWMA , PRICE_TYPICAL , 0 ); // МА_2 if (MA_1_t > MA_2_t + Rastvor* Point ) // Если разница между { // ..МА 1 и 2 большая Opn_B= true ; // Критерий откр. Buy Cls_S= true ; // Критерий закр. Sell } if (MA_1_t < MA_2_t - Rastvor* Point ) // Если разница между { // ..МА 1 и 2 большая Opn_S= true ; // Критерий откр. Sell Cls_B= true ; // Критерий закр. Buy } //--------------------------------------------------------------- 6 -- // Закрытие ордеров while ( true ) // Цикл закрытия орд. { if (Tip== 0 && Cls_B== true ) // Открыт ордер Buy.. { //и есть критерий закр Alert ( "Попытка закрыть Buy " ,Ticket, ". Ожидание ответа.." ); RefreshRates (); // Обновление данных Ans= OrderClose (Ticket,Lot, Bid , 2 ); // Закрытие Buy if (Ans== true ) // Получилось :) { Alert ( "Закрыт ордер Buy " ,Ticket); break ; // Выход из цикла закр } if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибок continue ; // Повторная попытка return ; // Выход из start() } if (Tip== 1 && Cls_S== true ) // Открыт ордер Sell.. { // и есть критерий закр Alert ( "Попытка закрыть Sell " ,Ticket, ". Ожидание ответа.." ); RefreshRates (); // Обновление данных Ans= OrderClose (Ticket,Lot, Ask , 2 ); // Закрытие Sell if (Ans== true ) // Получилось :) { Alert ( "Закрыт ордер Sell " ,Ticket); break ; // Выход из цикла закр } if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибок continue ; // Повторная попытка return ; // Выход из start() } break ; // Выход из while } //--------------------------------------------------------------- 7 -- // Стоимость ордеров RefreshRates (); // Обновление данных Min_Lot= MarketInfo (Symb, MODE_MINLOT ); // Миним. колич. лотов Free = AccountFreeMargin (); // Свободн средства MarketInfo (Symb, MODE_MARGINREQUIRED ); // Стоимость 1 лота Step = MarketInfo (Symb, MODE_LOTSTEP ); // Шаг изменен размера if (Lots > 0 ) // Если заданы лоты,то Lts =Lots; // с ними и работаем else // % свободных средств Lts= MathFloor (Free*Prots/One_Lot/Step)*Step; // Для открытия if (Lts < Min_Lot) Lts=Min_Lot; // Не меньше минимальн if (Lts*One_Lot > Free) // Лот дороже свободн. { Alert ( " Не хватает денег на " , Lts, " лотов" ); return ; // Выход из start() } //--------------------------------------------------------------- 8 -- // Открытие ордеров while ( true ) // Цикл закрытия орд. { if (Total== 0 && Opn_B== true ) // Открытых орд. нет + { // критерий откр. Buy RefreshRates (); // Обновление данных SL= Bid - New_Stop(StopLoss)* Point ; // Вычисление SL откр. TP= Bid + New_Stop(TakeProfit)* Point ; // Вычисление TP откр. Alert ( "Попытка открыть Buy. Ожидание ответа.." ); Ticket= OrderSend (Symb, OP_BUY ,Lts, Ask , 2 ,SL,TP); //Открытие Buy if (Ticket > 0 ) // Получилось :) { Alert ( "Открыт ордер Buy " ,Ticket); return ; // Выход из start() } if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибок continue ; // Повторная попытка return ; // Выход из start() } if (Total== 0 && Opn_S== true ) // Открытых орд. нет + { // критерий откр. Sell RefreshRates (); // Обновление данных SL= Ask + New_Stop(StopLoss)* Point ; // Вычисление SL откр. TP= Ask - New_Stop(TakeProfit)* Point ; // Вычисление TP откр. Alert ( "Попытка открыть Sell. Ожидание ответа.." ); Ticket= OrderSend (Symb, OP_SELL ,Lts, Bid , 2 ,SL,TP); //Открытие Sel if (Ticket > 0 ) // Получилось :) { Alert ( "Открыт ордер Sell " ,Ticket); return ; // Выход из start() } if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибок continue ; // Повторная попытка return ; // Выход из start() } break ; // Выход из while } //--------------------------------------------------------------- 9 -- return ; // Выход из start() } //-------------------------------------------------------------- 10 -- int Fun_Error( int Error) // Ф-ия обработ ошибок { switch (Error) { // Преодолимые ошибки case 4 : Alert ( "Торговый сервер занят. Пробуем ещё раз.." ); Sleep ( 3000 ); // Простое решение return ( 1 ); // Выход из функции case 135 : Alert ( "Цена изменилась. Пробуем ещё раз.." ); RefreshRates (); // Обновим данные return ( 1 ); // Выход из функции case 136 : Alert ( "Нет цен. Ждём новый тик.." ); while ( RefreshRates ()== false ) // До нового тика Sleep ( 1 ); // Задержка в цикле return ( 1 ); // Выход из функции case 137 : Alert ( "Брокер занят. Пробуем ещё раз.." ); Sleep ( 3000 ); // Простое решение return ( 1 ); // Выход из функции case 146 : Alert ( "Подсистема торговли занята. Пробуем ещё.." ); Sleep ( 500 ); // Простое решение return ( 1 ); // Выход из функции // Критические ошибки case 2 : Alert ( "Общая ошибка." ); return ( 0 ); // Выход из функции case 5 : Alert ( "Старая версия терминала." ); Work= false ; // Больше не работать return ( 0 ); // Выход из функции case 64 : Alert ( "Счет заблокирован." ); Work= false ; // Больше не работать return ( 0 ); // Выход из функции case 133 : Alert ( "Торговля запрещена." ); return ( 0 ); // Выход из функции case 134 : Alert ( "Недостаточно денег для совершения операции." ); return ( 0 ); // Выход из функции default : Alert ( "Возникла ошибка " ,Error); // Другие варианты return ( 0 ); // Выход из функции } } //-------------------------------------------------------------- 11 -- int New_Stop( int Parametr) // Проверка стоп-прик. { int Min_Dist= MarketInfo (Symb, MODE_STOPLEVEL ); // Миним. дистанция if (Parametr < Min_Dist) // Если меньше допуст. { Parametr=Min_Dist; // Установим допуст. Alert ( "Увеличена дистанция стоп-приказа." ); } return (Parametr); // Возврат значения } //-------------------------------------------------------------- 12 --また、コンパイルします。 12の警告がありますが、プログラムのパフォーマンスに影響を与えるものはありません。それらも修正されます。したがって、チュートリアルを開始するには、それだけです。 Ihor Herasko 2019.02.27 21:18 #57 BillionerClub:初心者の方はC++を学んでください。ここに良い資料がありますhttps://foxford.ru/wiki/informatika/otlichiya-yazykov-programmirovaniya-si-i-sあの人は車が必要なのに、あなたは彼に逃げ回ってる。MQLを学ぶ段階では、プログラマーが原則的にプログラミングを必要とするかどうか、それをやり遂げられるかどうかという問題があります。MQLはC++より簡単です。なぜわざわざ複雑なことをするのか? 特に、上記のリンクは、標準ライブラリ(MLQにはありますが、C++ではありません)、名前空間、coutとcinによる入出力など、MQLが持っていないものをすべて含んでいます。 Vasiliy Kolesov 2019.02.27 21:24 #58 Ihor Herasko:コンパイルされました。エラーはありません。警告は1つだけですが、これは「機能」という用語の基本的な理解で簡単に修正できます。 もう少し大きな例も撮りました。 コンパイルもできる。12個の警告が表示されますが、いずれもプログラムの動作に影響を与えるものではありません。それらも簡単に修正することができます。だからこそ、チュートリアルは良いきっかけになるのです。何となくやってみたけど、うまくいかなかった。名前が変わったからだと思いました。試していただき、ありがとうございます。もう一回、やり直した方がいいんじゃない? Dmitry Fedoseev 2019.02.27 21:37 #59 Vitaly Muzichenko:由利 まあ、誰でもどこかで始めるものですからね。 .phpから始めて、.jsを勉強したのは、これがないと普通のものを書いても現実的じゃないからです。.jsにjqueryライブラリが追加されたときは、楽しかったけど、覚えなきゃいけないし、ナンセンスだから純粋な.jsだけでいいという意見も多かったけど、ライブラリはかっこいいからみんなjqueryに移行していったね。 FXを触った時、大変だけど必要だから.mqlを勉強した、phpやjsとは違うんだ。 だから、大切なのは想いだけなんです。今、カッコいい子になるには、jqueryだけではダメで、あと○○個のフレームワークを勉強しないと...。そうやって、平均的なプログラマーは、1つのフレームワークを習得した直後に、さらに3つの新しいフレームワークが一気に現れるという、中途半端なプログラマーとしての一生を送ることになる。 Dmitry Fedoseev 2019.02.27 21:42 #60 Anastasia Vasilenko: 何を勉強したのですか?すでに知っていること、できることがあれば。一般的には、ターミナル・キットからExpert Advisorを取り出し、エディタで開いて、コード内の何かが別の色で強調表示されているかどうかを確認します - カーソルをそこに置いて、f1を押し、ヘルプを読みます。 プログラミングに全く慣れていない方、what for, ifなどがわからない方。- ダミーのための語学書や子供向けの本から始めてもよいでしょう。 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
コバレフの教科書を一から学ぶのは、時代遅れで不便です。演習を始めても、コンパイルができない。また、練習をせずにただ読むだけでは、物事を覚えられなくなります。
何か単純な例の話をしているわけではないと思うのですが。もう教科書の最後のほうにあるんでしょうね。そして、それはおそらく構文の問題で、基本を理解していれば、簡単に修正できるものです。いずれにせよ、TCはいつでも、この例やこの例はなぜコンパイルできないのか、と問うことができます。
チュートリアルの中で、コンパイルできない例を教えてください。一例として、分解してみましょう。
MQLだからC++を学べというのはごもっともな意見で、C++の方が資料もたくさんありますしね。
C++が分かるなら、ヘルプから他人のEAを解析してMQLを勉強してください。
MT以外の活動を計画的に行う場合です。しかし、そんなことを事前に計画することはできない。今は、MTのライティングを習得することが目標です。また、CやC++で始めた人は、MQLに最初からないそのようなもののために、そこで立ち往生してしまうでしょう。結局、単純な値の印字でも、coutではできないのです。この点では、MQLはプリントや アラートなど、より簡単です。
だから、必要なものから勉強したほうがいいんです。そして後で、気に入って続けたいと思ったら、C++に切り替えればいいのです。
初心者の方はC++を学んでください。ここに良い資料がありますhttps://foxford.ru/wiki/informatika/otlichiya-yazykov-programmirovaniya-si-i-s
プロでない人は避けてください。彼らの言葉は乾いていて、まったく記憶に残りません。ニーモニクスのテクニックを使う。インターネットでこのトピックに関する本がたくさん出ている。
個人的には、何かを記憶するためには、例えば機能などを現実のものとして想像し、さらに明るさやユーモア、セックス、シュールさなどを加えていく必要があります。
にこしたことはない
PositionOpenには、さらに6つのパラメータを入力する必要があります。その他のパラメータは規定する必要はない
これらは単純な例とは言い難い。すでに教科書の巻末に掲載されているのでしょう。そして、それはおそらく構文に関するもので、基本を理解していれば、簡単に修正することができます。いずれにせよ、TCはいつでも、この例やこの例はなぜコンパイルできないのか、と問うことができます。
チュートリアルの中で、コンパイルできない例を教えてください。一例を挙げましょう。
はい、最初から、例えばStart関数がなく、今はOnInit() になっています。
ここに良い記述がありました、ゼロから始めるならhttps://sgr-tradeinvest.ru/mql4
はい、最初から、たとえばStart関数はありませんが、現在はOnInit()です。
編集済み。エラーはありません。 「機能」という用語を基本的に理解することで簡単に修正できる警告は1つだけです。
私は少し大きな例を取りました:
また、コンパイルします。 12の警告がありますが、プログラムのパフォーマンスに影響を与えるものはありません。それらも修正されます。したがって、チュートリアルを開始するには、それだけです。
初心者の方はC++を学んでください。ここに良い資料がありますhttps://foxford.ru/wiki/informatika/otlichiya-yazykov-programmirovaniya-si-i-s
あの人は車が必要なのに、あなたは彼に逃げ回ってる。MQLを学ぶ段階では、プログラマーが原則的にプログラミングを必要とするかどうか、それをやり遂げられるかどうかという問題があります。MQLはC++より簡単です。なぜわざわざ複雑なことをするのか?
特に、上記のリンクは、標準ライブラリ(MLQにはありますが、C++ではありません)、名前空間、coutとcinによる入出力など、MQLが持っていないものをすべて含んでいます。
コンパイルされました。エラーはありません。警告は1つだけですが、これは「機能」という用語の基本的な理解で簡単に修正できます。
もう少し大きな例も撮りました。
コンパイルもできる。12個の警告が表示されますが、いずれもプログラムの動作に影響を与えるものではありません。それらも簡単に修正することができます。だからこそ、チュートリアルは良いきっかけになるのです。
何となくやってみたけど、うまくいかなかった。名前が変わったからだと思いました。試していただき、ありがとうございます。もう一回、やり直した方がいいんじゃない?
由利 まあ、誰でもどこかで始めるものですからね。
.phpから始めて、.jsを勉強したのは、これがないと普通のものを書いても現実的じゃないからです。.jsにjqueryライブラリが追加されたときは、楽しかったけど、覚えなきゃいけないし、ナンセンスだから純粋な.jsだけでいいという意見も多かったけど、ライブラリはかっこいいからみんなjqueryに移行していったね。
FXを触った時、大変だけど必要だから.mqlを勉強した、phpやjsとは違うんだ。
だから、大切なのは想いだけなんです。
今、カッコいい子になるには、jqueryだけではダメで、あと○○個のフレームワークを勉強しないと...。そうやって、平均的なプログラマーは、1つのフレームワークを習得した直後に、さらに3つの新しいフレームワークが一気に現れるという、中途半端なプログラマーとしての一生を送ることになる。
何を勉強したのですか?
すでに知っていること、できることがあれば。一般的には、ターミナル・キットからExpert Advisorを取り出し、エディタで開いて、コード内の何かが別の色で強調表示されているかどうかを確認します - カーソルをそこに置いて、f1を押し、ヘルプを読みます。
プログラミングに全く慣れていない方、what for, ifなどがわからない方。- ダミーのための語学書や子供向けの本から始めてもよいでしょう。