এমটি 4 ডিএলএল মেমরি দূষণ

Thread: এমটি 4 ডিএলএল মেমরি দূষণ

  1. #1
    হাই বন্ধুরা,

    আমি একটি ইএ এবং একটি DLL ive লিখিত একটি intermittent হচ্ছে (Gota যারা বেশী ভালবাসেন)। EA 5 টি ভিন্ন জোড়া জুড়ে চালায়, তবে ডিএলএলটি প্রেরিত তথ্যটি মূলত ভিন্ন ভিন্ন মানগুলির সমান।

    সমস্যাটা হচ্ছে যে এক জোড়া থেকে তথ্য অন্য জোড়াতে ইএ দ্বারা নেওয়া হচ্ছে। উদাহরণস্বরূপ, আমি সঠিক লটাসাইজ গণনা করার জন্য ইএ ডেটাতে পাঠাচ্ছি, যদি তারা পৃথকভাবে চালানো হয় তবে তারা জরিমানা কাজ করে, কখনও কখনও যখন আমি তাদের একসাথে চালাও, তারা সবাই একই মালামাল দিয়ে শেষ হয়।

    আমি এখানে কোথাও পড়ি যে একাধিক চার্ট থেকে এটিকে একক DLL অ্যাক্সেস করার সময়, আপনি প্রকৃতপক্ষে একই মেমরি স্থানটি ভাগ করছেন, যা আমি পৌঁছানোর উপসংহারে পৌঁছেছি, এটি প্রায় এলোমেলোভাবে, যেহেতু আমি অ্যারেতে যা তথ্য প্রয়োজন তা লিখে DLL দ্বারা বাছাই করা হবে। ওহে পয়েন্টার পয়েন্টার ব্যবহার করছি। এখানে DLL ঘোষণা আছে:

    #import xxx.dll
    বোল F1 (স্ট্রিং এআর 1 [10], ডাবল এআর 2 [40], ডবল হার 1 [2000] [6], ডবল হার 2 [2000] [6]);
    ডবল F2 (স্ট্রিং এআর 1 [10], ডাবল এআর 2 [40], ডবল হার 1 [2000] [6], ডবল হার 2 [2000] [6]);

    সমস্যাটি কি আমার ধারণা অনুসারে সঠিক, যদি তাই হয়, প্রতিটি জোড়ার জন্য DLL duplicing ছাড়া অন্য কোন যুক্তিসঙ্গত সমাধান আছে?

    আগাম ধন্যবাদ

  2. #2
    আমি আপনার নির্ণয় মৃত উপর মনে হয়। আমি আলাদা আলাদা ডিএলএল থাকার চেয়ে সিএসভি ফাইল আলাদা করার জন্য তথ্য লেখার অনুমান করি। আরেকটি ধারণা একটি বুলিয়ান পরামিতি মান হিসাবে একটি সেফফার মত মান কাজ হবে এবং যদি এটি ব্যস্ত অন্য EA ব্লক করা হয়। একবার প্রথম EA সমাপ্ত হলে, এটি প্রস্তুত হতে পুনরায় সেট করা হবে এবং অন্যটি DLL অ্যাক্সেস করতে পারে। এমটি 4 ইভেন্ট পরিচালনার ক্ষেত্রে বাস্তব ভাল নয় তবে আমি মনে করি এটি বাস্তবায়নের জন্য কিছু দুর্দান্ত উপায় থাকতে পারে। DLL কোডটি কত ঘন ঘন বলা হয় (এটি প্রতিটি নতুন বার বা নতুন টিক বা একবার সক্রিয়করণের জন্য) এবং একাধিক অ্যাক্সেসের সম্ভাবনা সম্পর্কে এটি নির্ভর করে।

  3. #3
    একটি সি .exe ব্যবহার করুন যা একটি ভাগ করা মেমরি স্থান সেট করে, তারপরে মেটাট্রেডার থেকে আপনার ডিল কল মাধ্যমে ভাগ করা মেমরি স্থান অ্যাক্সেস করুন। একাধিক জোড়া জন্য, সম্ভবত আপনাকে একাধিক ভাগ করা মেমরি স্পেস অ্যারে সেট আপ করতে হবে, প্রতিটি আলাদা dlls দ্বারা অ্যাক্সেস করা হবে। আমি এটা করেছি, এবং এটা আমার জন্য কাজ করে।

  4. #4
    দুর্ভাগ্যবশত আপনি আপনার বাস্তবায়ন সম্পর্কে অস্পষ্ট। হিসাবে আমি এটা বুঝতে: 1) EA তথ্য DLL (পাস রেফারেন্স? (পয়েন্টার)) পাস করে 2) আপনার DLL কপি? এই তথ্যটি তার নিজস্ব ভেরিয়েবলঅ্যালয়� �ড মেমরি 3) আপনার DLL এমটি 4 এ ফিরে যাওয়ার মানগুলি গণনা করার জন্য আপনার নিজস্ব ভেরিয়েবলগুলিতে এই ডেটাটি ব্যবহার করে 4) আপনার DLL আপনার EA- এ রেফারেন্সগুলি (রেফারেন্স? (পয়েন্টার্স) দ্বারা মূল্য প্রদান করে) যদি এটি হয় কেন শুধু আপনার dll কোডগুলি অ্যারেগুলির আলাদা সেট ব্যবহার করার জন্য কোড করবেন না .. সব কাজ করার পরে আপনি কেবলমাত্র 5 টি কাজ করতে পারবেন না যখন সেগুলি বিভিন্ন থ্রেড থেকে চলছে! তাই আপনার dll তে 1) আপনার অ্যারেতে আরেকটি মাত্রা যুক্ত করুন (প্রতিটি জোড়াের জন্য (কয়েকটি) - একটি গতিশীলভাবে তাদের পরিচালনা করুন) 2) একটি প্রারম্ভিককরণ ফাংশন যোগ করুন যাতে আপনার MT4 EA অনুরোধ করে এবং এটি একটি অনন্য আইডি প্রদান করে যা ব্যবহার করা যেতে পারে তার নিজস্ব অ্যারে সেট রেফারেন্স। যেমন। ইএ কোড # আমদানি # ডাবল F2 (ইন্ট আইডি, স্ট্রিং এআর 1 [10], ডাবল এআর 2 [40], ডাবল রেট 1 [2000] [6], ডাবল রেট ২ [2000] [6]);/গ্লোবাল int myid .. .. myid = Request_DLL_ID (); যদি myid = -1 তারপর ত্রুটি f2 (রহস্য, স্ট্রিং arr1 [10], ডবল arr2 [40], ডবল হার 1 [2000] [6], ডবল হার 2 [2000] [6]); আপনার DLL যে আইডি নম্বরটি সম্ভবত একটি আনুষ্ঠানিক লক আপ তালিকা সহ একটি অনন্য সংখ্যা এলোকে একটি আসল অ্যারে মাত্রা বা প্রকৃত অ্যারে মাত্রা হতে পারে।

  5. #5

    Quote Originally Posted by ;
    সমস্যাটি কি আমার ধারণা অনুসারে সঠিক, যদি তাই হয়, প্রতিটি জোড়ার জন্য DLL duplicing ছাড়া অন্য কোন যুক্তিসঙ্গত সমাধান আছে?
    এই সমস্যার দুটি সমাধান আছে, তাদের মধ্যে কোনটি dll dupling অন্তর্ভুক্ত। 1.) সমস্ত ফাংশনগুলিতে সব প্যারামিটারগুলিক� � পাস করুন * সর্বদা * Dll- এ সমস্ত ফাংশনে ফাংশন আর্গুমেন্ট হিসাবে যাতে DLL এর ভিতরে কোন বৈশ্বিক বৈচিত্র্য নেই। ম্যাক্ল থেকে ডবল foo [] এর মতো বড় ডাটা স্ট্রাকচারগুলিতে শুধুমাত্র পয়েন্টারগুলি পাস করুন, তাই আপনার প্রতিটি ফাংশন কলটিতে স্ট্যাক থেকে ধাক্কা এবং পপ করার জন্য খুব বেশি ডেটা নেই। 2.) আপনার ডেলের সমস্ত ফাংশন এবং আপনার ইএ এর ইনিট () এর ইনট () এর ভিতরে থাকা গ্লোবাল ডেটাটিকে ডিলের একটি ফাংশন কল করুন যা এই ক্লাস থেকে একটি নতুন বস্তু উদাহরণ তৈরি করবে এবং এই উদাহরণে একটি পয়েন্টার প্রদান করবে। । আপনি এই 32 বিট পয়েন্টারকে 32 বিট int ভেরিয়েবলে নিরাপদে কাস্ট করতে পারেন এবং mql4 এ ফিরে যেতে এবং আপনার EA এ সংরক্ষণ করতে পারেন। আপনার dll এর API টি এখন এমন ফাংশনগুলি ধারণ করে যা এই প্যারামিটার হিসাবে এই পূর্ণসংখ্যা নম্বর হিসাবে গ্রহণ করে। প্রত্যেকটি পদ্ধতির জন্য আপনি আপনার বস্তুর উপর কল করতে চান এমন একটি রপারটি লিখুন এবং রপ্তানি করুন যা বস্তুর প্রথম পয়েন্টার হিসাবে পয়েন্টারকে গ্রহণ করে। আপনার ইএ এই রপার ফাংশনগুলিকে তার নিজস্ব int সংখ্যা সহ কল ​​করবে এবং ডেলের মোড়ক ফাংশনগুলি ইন্টের ই-মেইলের বস্তুর দিকে পয়েন্টারটিতে ফেরত দেবে এবং তারপরে সেই বস্তুর সংশ্লিষ্ট পদ্ধতিগুলিকে কল করবে। প্রথমটি (কোনও বিশ্বব্যাপী ভেরিয়েবল নেই) বাস্তবায়ন করা সহজ। দ্বিতীয়টি আরও জটিল বিষয়গুলির জন্য সুপারিশ করা হয়, আপনি যে কোনও ক্ষেত্রে এই OOP ব্যবহার করবেন। এটি শুধুমাত্র 32bit উইন্ডোতে ব্যবহার করা হবে এটি প্রায় পয়েন্টার পাস করার জন্য সম্পূর্ণ নিরাপদ। যদি কোন কারণের জন্য আপনি ডল এবং ইএ এর মধ্যে পয়েন্টারগুলি নিক্ষেপ করতে এবং পাস করতে চান না তবে আপনি কিছু ধরণের হ্যাশ টেবিল বা ডায়নামিক অ্যারে ব্যবহার করতে পারেন অথবা আপনার রানটাইম লাইব্রেরি বা টুলকিট যা পয়েন্টার সঞ্চয় করার জন্য এই জিনিসগুলি অফার করতে পারে Dll নিজেই বস্তু এবং EA থেকে এবং হিসাবে কী আরো পোর্টেবল (একটি স্ট্রিং বা একটি হ্যান্ডেল) পাস। এই অবশ্যই কর্মক্ষমতা প্রভাবিত করবে।

  6. #6
    যদি আপনি প্রথম রুটটি যাওয়ার সিদ্ধান্ত নিয়ে থাকেন (সর্বদা প্যারামিটারগুলি প্রায়শই ফাংশন আর্গুমেন্ট হিসাবে পাস করে) তবে খুব তাড়াতাড়ি থেকে নিম্নলিখিতগুলি অনুসরণ করা ভাল অনুশীলন: আপনার ইএ-এর নিম্নলিখিত (কল্পিত) বহিরাগত সেটিংস রয়েছে তা অনুমান করুন: সন্নিবেশকৃত কোড বাইরের ex_foo; এক্সটার্ন ডবল ex_bar; এক্সটার্ন ডবল ex_period; এক্সটার্ন ডবল ex_gamma; এক্সটার্ন ডবল ex_delta; এবং নিম্নলিখিত গ্লোবাল ভেরিয়েবলগুলি যা অপারেশন চলাকালীন পরিবর্তন করতে পারে এবং এটিও ফাংশনগুলির জন্য প্রয়োজন: সন্নিবেশকৃত কোড ডবল শেষ_হঘ; ডবল last_low; তারপরে নিম্নোক্ত কাজগুলি করুন: সূচী কোডের জন্য নামযুক্ত সংশ্লেষগুলি সংজ্ঞায়িত করুন: সন্নিবেশকৃত কোড # নির্ধারণ করুন I_FOO 0 # নির্ধারণ করুন I_BAR 1 # ডিফল্ট I_PERIOD 2 # নির্ধারণ করুন I_GAMMA 3 # ডিফল্ট I_DELTA 4 # ডিফল্ট I_LAST_HIGH 5 # I_LAST_LOW 6 # 91; রঙ = সাগুজিন # 93;/সর্বোচ্চ। অ্যারের আকার # 91;রঙ # 93; # ডিফল্ট I_SIZE 7 এবং একটি বিশ্বব্যাপী অ্যারে অন্তর্ভুক্ত কোড ডাবল গ্লোবাল # 91; I_SIZE # 93 ;; int init () {# 91; রঙ = সাগরিন # 93;/এক্সটার্নাল # 91;রঙ # 93; বিশ্বব্যাপী # 91; I_FOO # 93; = ex_foo; বিশ্বব্যাপী # 91; I_BAR # 93; = ex_bar; বিশ্বব্যাপী # 91; I_PERIOD # 93; = ex_period; বিশ্বব্যাপী # 91; I_GAMMA # 93; = ex_gamma; বিশ্বব্যাপী # 91; I_DELTA # 93; = ex_delta; # 91; রঙ = SeaGreen # 93;/অন্যান্য গ্লবালগুলি # 91;রঙ # 93; বিশ্বব্যাপী # 91; I_LAST_HIGH # 93; = 0; বিশ্বব্যাপী # 91; I_LAST_LOW # 93; = 0; } আপনার ফাংশনগুলিকে dll এ কল করুন সন্নিবেশকৃত কোড int ফলাফল = dllfunc (গ্লোবালস, ...); এবং dll এ আপনি উপরে হিসাবে একই স্টানেন্ট সংজ্ঞায়িত করেছেন আপনি কেবল নিম্নলিখিত করতে পারেন। (এই উদাহরণের জন্য আমরা ডিলটি প্যাসকেলে অনুমান করব যাতে এটি এখানে খুব বিরক্তিকর না হয়
    । এটি যে সমস্যার সমাধান করার চেষ্টা করছেন তা প্রভাবিত করে না, এটি সমস্ত ভাষাগুলিতে প্রযোজ্য। আপনি যদি ইতিমধ্যে সি কোডটি পড়তে পারেন তবে আপনি সহজেই খুব সহজ (বস্তু-) পাসকাল কোডটি পড়তে এবং বুঝতে পারবেন এবং কোন সমস্যা ছাড়াই আপনার পছন্দের ভাষায় ধারণাটিকে অনুবাদ করতে পারেন) সন্নিবেশ কোড # 91; বি # 93; লাইব্রেরি # 91;# 93 বি; myholygrail; # 91; p # 93; const # 91;# 93 বি; I_FOO = 0; I_BAR = 1; I_PERIOD = 2; I_GAMMA = 3; I_DELTA = 4; I_LAST_HIGH = 5; I_LAST_LOW = 6; I_SIZE = 7; # 91; p # 93; টাইপ # 91;খ # 93; TGlobals = অ্যারে # 91; 0..I_SIZE-1 # 93; দ্বিগুণ # 91; p # 93; ফাংশন # 91;খ # 93; dllfunc (# 91; বি # 93; var # 91;b # 93; বিশ্বব্যাপী: টিজিববলস ... ...): পূর্ণসংখ্যা; stdcall; # 91; p # 93; Var # 91;খ # 93; foo: ডবল; উচ্চ: ডবল; # 91; p # 93; শুরু # 91;# 93 বি; foo: = global # 91; I_FOO # 93 ;; # 91; রঙ = SeaGreen # 93;/কিছু স্টাফ # 91;রঙ # 93; বিশ্বব্যাপী # 91; I_LAST_HIGH # 93; : = উচ্চ; # 91; রঙ = SeaGreen # 93;/আরো কিছু জিনিস # 91;রঙ # 93; # 91; রঙ = SeaGreen # 93;/... # 91;রঙ # 93; # 91; p # 93; শেষ; # 91;# 93 বি; # 91; # 93 বি; # 91 রপ্তানি;খ # 93; dllfunc; # 91; p # 93; # 91 শুরু;# খ 93; # 91; p # 93; শেষ. # 91;# 93 বি; এর কারণ হল আপনি পরে আরও প্যারামিটার যুক্ত করতে পারেন, এই অ্যারেতে আরও বৈশ্বিক ভেরিয়েবল এবং আপনি যা পরিবর্তন করতে চান তা হল এই স্থিরতার সংজ্ঞা। কোডটি সর্বদা পঠনযোগ্য হবে, আপনি বিশ্বব্যাপী [42] সর্বজনীন [42] মত আক্ষরিক সংখ্যাগুলি ব্যবহার করবেন না, সর্বদা বিশ্বব্যাপী [I_SOMETHING] এবং এটি প্রকৃতপক্ষে অবস্থান 42 বা অন্য কোথাও আছে কিনা তা যত্ন নেওয়ার দরকার নেই।

  7. #7
    হাই বন্ধুরা, আপনার সমস্ত প্রতিক্রিয়ার জন্য ধন্যবাদ, এই ধরনের জ্ঞানীয় ব্যক্তিদের অবদান রেখে একটি সম্প্রদায়ের কাছে দুর্দান্ত। 7 বিবিসি: যদি আমি সঠিকভাবে বুঝতে পারি, আপনি বলছেন আসল সমস্যাটি হল আমি অ্যারেকে অবস্থান দ্বারা কল করছি, উদাহরণস্বরূপ arr2 [25] পৃথকভাবে প্রতিটি উপাদানকে সংজ্ঞায়িত করার পরিবর্তে এবং এটির উল্লেখ করে? DLL এর নিজস্ব কোনও বিশ্বব্যাপী ভেরিয়েবল নেই, এটিতে প্রেরিত সমস্ত ভেরিয়েবল শুধুমাত্র ফাংশনে স্থানীয়। RangeBound: আমি কি করছি এমটি 4 এর মধ্যে একটি ডবল অ্যারে তৈরি করছে, এটি একটি পয়েন্টারের মাধ্যমে DLL দ্বারা অ্যাক্সেস দেওয়া হচ্ছে। ফাংশনটি কিছু উপাদানের দিকে তাকায়, কিছু গণিত করে, তারপরে একই ক্ষেত্রে অ্যারেটিতে অন্য উপাদানটি লিখে থাকে, এই ক্ষেত্রে প্রচুর পরিমাণে। একই জোড়া আউটপুট মান (এআর 2 [19]) সব জোড়া জন্য ব্যবহার করা হয় এবং আমি যা দেখছি তা হল অন্য জুড়ে শেষ হওয়া আরেকটি জোড়া জন্য নির্ধারিত। আমি প্রতিটির জন্য একাধিক অ্যারে ব্যবহার সম্পর্কে ভাবি, তবে সমস্যাটি আরও জটিল হওয়ার আগেই সমস্যাটির সমাধান করা উচিত। শুরুতে এটি মনে হয় যে 7 বিট সমাধান সহজ, কিন্তু আমি এই সম্পর্কে মন্তব্য স্বাগত জানাই। আবারও একবার ধন্যবাদ.

  8. #8

    Quote Originally Posted by ;
    : যদি আমি সঠিকভাবে বুঝতে পারি, আপনি বলছেন যে আসল সমস্যাটি হল আমি অ্যারেকে অবস্থান দ্বারা কল করছি, উদাহরণস্বরূপ arr2 [25] পৃথকভাবে প্রতিটি উপাদানকে সংজ্ঞায়িত করার পরিবর্তে এবং এটির উল্লেখ করে?
    না, সত্যিই না, এটি পঠনযোগ্যতা সম্পর্কে (এবং এভাবে ত্রুটিগুলি এড়াতে)। আমি যা বলতে চেয়েছিলাম তা হল যে arr [MEANINGFUL_NAME] এর পরিবর্তে arr [MEANINGFUL_NAME] ব্যবহার করে [25] কোডটিকে পাঠযোগ্য এবং রক্ষণযোগ্য রাখতে কেবল একটি সুবিধাজনক উপায়। এইভাবে আপনি সহজেই আপনার সমস্ত গ্লোবালকে এক অ্যারের মধ্যে স্টাফ করতে পারেন এবং প্রায় এক পয়েন্টার পাস করতে পারেন এবং এখনও অ্যারে সূচকগুলি বিভ্রান্তিকর করে প্রোগ্রামিং ত্রুটিগুলি তৈরি না করেই বা সহজে পঠনযোগ্য কিছু আছে অথবা আপনি যখন কাঠামো পরিবর্তন করার সিদ্ধান্ত নেয় তখন সব জায়গায় সংখ্যা পরিবর্তন করতে ভুলবেন না পরে যে অ্যারে। এই কোডটি বিবেচনা করুন: সন্নিবেশকৃত কোড স্কেল # 91; I_SCALE # 93; : = (মূল্য_সংখ্যা # 91; I_HIGH # 93; - মূল্য_সংখ্যা # 91; I_LOW # 93(প্যাটার্ন_সাইট # 91; আই_এইচএইচ # 93; - প্যাটার্ন_সাইজ # 91; I_LOW # 93; স্কেল # 91; I_OFFSET # 93; : = price_range # 91; I_LOW # 93; - pattern_size # 91; I_LOW # 93; * স্কেল # 91; I_SCALE # 93 ;; এবং এটির সাথে তুলনা করুন: সন্নিবেশকৃত কোড স্কেল # 91; 0 # 93; : = (মূল্য_সংখ্যা # 91; 1 # 93; - মূল্য_সংখ্যা # 91; 0 # 93(প্যাটার্ন_সাইজ # 91; 1 # 93; - প্যাটার্ন_সাইজ # 91; 0 # 93; স্কেল # 91; 1 # 93; : = price_range # 91; 0 # 93; - pattern_size # 91; 0 # 93; * স্কেল # 91; 0 # 93 ;; এটি একই জিনিস, একই মেশিন কোড কম্পাইল কিন্তু কোনটি আরও পঠনযোগ্য? একই কোডটি পরে উল্টানো প্যাটার্নের সাথে প্রদর্শিত হয়, কম উচ্চ হয়ে ও উচ্চতর হয়ে যায়, আপনি কি মনে করেন কতক্ষণ আমি সেখানে বসে থাকব এবং এই দুটি লাইনের দিকে তাকিয়ে থাকি যদি আমি দুর্ঘটনাক্রমে 0 এবং 1 কোথাও বিভ্রান্ত হয়ে থাকি, ? এটি প্রোগ্রামিং ত্রুটির সম্ভাব্য কারণ হ্রাস সম্পর্কে সব।
    Quote Originally Posted by ;
    DLL এর নিজস্ব কোনও বিশ্বব্যাপী ভেরিয়েবল নেই, এটিতে প্রেরিত সমস্ত ভেরিয়েবল শুধুমাত্র ফাংশনে স্থানীয়।
    তারপরে আপনার প্রাথমিকভাবে পোস্ট করা সমস্যাটি সংঘটিত হওয়া উচিত নয়, এবং যদি এটি ঘটে তবে কার্যগুলি একটি ডিলের মধ্যে বাস করে। আর্গুমেন্ট হিসাবে গৃহীত ভেরিয়েবল এবং ফাংশনে স্থানীয় ঘোষিত যারা সর্বদা স্ট্যাকের উপর থাকবে, অর্থাত একই ফাংশন ব্যবহার করে প্রতিটি থ্রেড একই সময়ে তার ভেরিয়েবলগুলির জন্য নিজস্ব স্থান থাকবে, কারণ প্রতিটি থ্রেড তার নিজস্ব স্ট্যাক বরাবর আসবে এবং প্রতিটি EA দৃষ্টান্ত আমাদের সমস্যা জন্য একটি ভিন্ন থ্রেড হিসাবে গণ্য করা যেতে পারে)। উপরন্তু, যখন একটি ফাংশন বলা হয় তখন এটি স্ট্যাকের উপর সর্বদা নতুন স্থান সংরক্ষণ করবে এবং কোনও ফাংশনটি ফেরত পাঠানো হলে ফ্যাক্টটিটি ঠিক আগে ঠিক একই অবস্থায় ফিরে আসবে। স্থানীয় ভেরিয়েবলগুলি কেবল দুর্ঘটনাক্রমে চলতে পারে না এবং বর্তমান ফাংশন কল অতিক্রম করে পুনরায় আবির্ভূত হতে পারে। আপনি পর্যবেক্ষণ করছেন আচরণের আরেকটি কারণ হতে হবে। আপনার কোডে কোথাও কিছু ভাল লুকানো কদর্য প্রোগ্রামিং ত্রুটি থাকতে হবে (অগত্যা dll তে নয়)।

  9. #9
    উত্তর দেওয়ার জন্য ধন্যবাদ. স্থানীয়বিশ্বব্য� �পী মেশানো না হওয়া পর্যন্ত নিশ্চিতভাবে 100% নিশ্চিত করুন, এখানে DLL ফাংশনটি উদ্বেগ সৃষ্টি করে: bool get_lotsize (MQLStr * arr1, double * arr2, const রেটফো * রেট 1, const রেট ratefo * রেট 2, ডাবল stop_loss)/অনেক আকার ফেরত {দ্বৈত ঝুঁকিপূর্ণ, পাইপলিউ, লোটাইজ; ঝুঁকিপূর্ণ = (arr2 [10] * (arr2 [7]100))arr2 [11]; পাইপ্যালু = এআর 2 [8]; যদি (arr2 [1] == 5 || arr2 [1] == 3) pipvalue * = 10; lotize = ঝুঁকিপূর্ণ(stop_loss * pipvalue); lotize = মেঝে (lotizearr2 [4]) * arr2 [4]; যদি (lotize lt; arr2 [5]) lotize = arr2 [5];/মিনিট লট যদি (প্রচুর gt gt; arr2 [6]) lotize = arr2 [6];/সর্বাধিক অনেক অ্যার 2 [19] = প্রচুর; আসতে (সত্য); } শুধু এই দিকে তাকান stop_loss একটি DLL গ্লোবাল পরিবর্তনশীল। DLL এর শিরোনামে ঘোষিত, এই পরিবর্তনশীল DLL এ সমস্ত কলগুলির মধ্যে স্থায়ী হবে? যদি তাই হয় তাহলে আমরা সমস্যা খুঁজে পেয়েছি

  10. #10

    Quote Originally Posted by ;
    শুধু এই আসলে looking_loss একটি DLL গ্লোবাল পরিবর্তনশীল খুঁজছেন। DLL এর শিরোনামে ঘোষিত, এই পরিবর্তনশীল DLL এ সমস্ত কলগুলির মধ্যে স্থায়ী হবে? যদি তাই হয় তাহলে আমরা সমস্যা খুঁজে পেয়েছি
    ফাংশনটির বাইরে Dll এ ঘোষিত একটি পরিবর্তনশীল সমস্ত থ্রেডগুলি (সমস্ত EAs) থেকে সমস্ত ফাংশন কলগুলির সাথে ভাগ করা হবে। কি আমাকে এখানে আশ্চর্য করে কি একই ফাংশন সঙ্গে কাজ ফাংশন এর যুক্তি তালিকায় ঘোষণা। সাধারণত স্থানীয় ভেরিয়েবলটি ফাংশনটির বাইরে একই পরিবর্তনশীলের উপর প্রবাহিত হওয়া উচিত তবে আমার সি জ্ঞান সীমিত। যাইহোক, আপনার সি কম্পাইলারটি সঠিকভাবে বা না হ্যান্ডেল করবে কিনা, এমন নামকরণ সংঘর্ষ সবসময় কোনও ধরণের সমস্যার জন্য কল করে, যা প্রোগ্রামিং ত্রুটিগুলিকে আরো বেশি করে এবং তাদের সনাক্তকরণকে আরও কঠিন করে তোলে। আপনি dll মধ্যে ফাংশন বাইরে সব বিশ্বব্যাপী পরিবর্তনশীল ঘোষণা পরিত্রাণ পেতে হবে।

পৃষ্ঠা 1 মোট পৃষ্ঠা 435 123 ... সর্বশেষসর্বশেষ

অনুমতি প্রদান

  • আপনি হয়তো নতুন থ্রেড পোস্ট করবেন না
  • আপনি হয়তো উত্তর পোস্ট করবেন না
  • আপনি হয়তো সংযুক্ত কিছু পোস্ট করবেন না
  • আপনি হয়তো আপনার পোস্ট এডিট করবেন না
  •  
  • বি বি কোড চালু
  • স্মাইলি চালু
  • [IMG] কোড চালু
  • [VIDEO] কোড চালু
  • HTML কোড বন্ধ
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.